WebView отображает в неправильном месте в моем ScreenSaverView

Я написал заставку, которая отображает веб-страницу. Он работает точно так, как я хочу, чтобы на моем главном дисплее, но на предварительном и дополнительном дисплеях, веб-вид висит над верхней частью экрана.

Пример (из превью):

экранная заставка Глюк http://img.skitch.com/20081212-nk5cqrgfds1funr1a3p72aw25q.preview.jpg
Загрузил с plasq «сек Skitch !

Мой код довольно прост. Изнутри у initWithFrame:isPreview:меня есть следующий код:

webview = [[WebView alloc] initWithFrame:frame
                           frameName:@"main"
                           groupName:@"main"];
[self addSubview:webview];

Кто-нибудь знает, что происходит?

Если кто-то хочет поиграть с проектом, код на github.

12.12.2008 19:34:53
2 ОТВЕТА
РЕШЕНИЕ

Я посмотрел на ваш код, и вы используете прямоугольник фрейма superview (WebSaverView) в качестве фрейма WebView. Вместо этого вы должны использовать его ограничивающий прямоугольник ( [self bounds]). Ограничительный прямоугольник представляет область «внутри» суперпредставления. Как вы уже видели, они не всегда имеют одинаковое происхождение, что вызывает эту проблему. Вы не должны корректировать передаваемый кадр initWithFrame:, поскольку у источника, вероятно, есть очень веская причина не быть 0,0.

1
12.12.2008 22:12:24
Мне интересно, что это может быть за причина. На моем основном дисплее это 1440x900 при 0,0, но на моем дополнительном это 1920x1200 при 1440,452. Какую ценность они обеспечивают? Спасибо за понимание, это решает мою проблему и чувствует себя менее уродливо.
Dustin 12.12.2008 22:47:11

Я думаю, что кадр, который вы даете WebView, находится в неправильных координатах. Помните, что фрейм представления выражается через систему координат суперпредставления (границы).

Вы должны сделать представление таким же большим, как и суперпредставление -bounds, если я правильно понимаю, что вы хотите сделать: обычно прямоугольник от (0,0) до (ширина, высота).

1
12.12.2008 21:00:59
Интересно. Я сделал немного больше осмотра вокруг входящего кадра и обнаружил, что исходное смещение было просто ... странным. Если я установлю его на 0, правильная вещь произойдет.
Dustin 12.12.2008 21:10:05