【问题标题】:WebView renders in the wrong location in my ScreenSaverViewWebView 在我的 ScreenSaverView 中的错误位置呈现
【发布时间】:2008-12-12 19:34:53
【问题描述】:

我编写了一个显示网页的屏幕保护程序。它在我的主显示器上完全按照我想要的方式工作,但在预览和辅助显示器中,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。

【问题讨论】:

    标签: objective-c macos webkit


    【解决方案1】:

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

    【讨论】:

    • 我很好奇这个原因可能是什么。在我的主显示器上,它在 0,0 时为 1440x900,但在我的辅助显示器上,它在 1440,452 时为 1920x1200。这些提供了什么价值?感谢您的洞察力,这确实解决了我的问题并且感觉不那么难看。
    【解决方案2】:

    我认为您提供给 WebView 的框架位于错误的坐标中。请记住,视图的框架是根据父视图的坐标系(边界)表示的。

    如果我正确理解了您想要做的事情,您应该将视图设置为与父视图的 -bounds 一样大:通常是从 (0,0) 到 (width,height) 的矩形。

    【讨论】:

    • 有趣。我对进入的框架进行了更多检查,发现原点偏移只是......奇怪。如果我将它设置为 0,就会发生正确的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多