WebView在我的ScreenSaverView中呈现错误的位置

时间:2008-12-12 19:34:53

标签: objective-c macos webkit

我写过一个显示网页的屏幕保护程序。它在我的主显示器上完全按照我的要求工作,但在预览和辅助显示中,Web视图悬挂在屏幕顶部。

示例(来自预览):

screen saver bug http://img.skitch.com/20081212-nk5cqrgfds1funr1a3p72aw25q.preview.jpg上传了plasqSkitch

我的代码很简单。在initWithFrame:isPreview:内,我有以下代码:

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

有谁知道发生了什么事?

如果有人想玩这个项目,the code就在github上。

2 个答案:

答案 0 :(得分:1)

我认为你给WebView的框架坐标错误。请记住,视图的框架是以超视图的坐标系(边界)表示的。

如果我正确地想要做什么,你应该使视图与superview的-bounds一样大:通常是从(0,0)到(宽度,高度)的矩形。

答案 1 :(得分:1)

我查看了你的代码,你正在使用superview的(WebSaverView)框架矩形作为WebView的框架。您应该使用它的边界矩形([self bounds])。边界矩形表示超视图“内部”的区域。正如您所见,这两者可能并不总是具有相同的原点,这导致了这个问题。你不应该调整你在initWithFrame:传递的帧,因为原点可能有很好的理由不是0,0。