0

我有一个包含 WebView 的自定义视图。我的自定义视图在其中进行自己的布局,resizeWithOldSuperviewSize:然后调用resizeSubviewsWithOldSize:以调整其子视图的大小。

我的自定义视图包含一个 WebView、一个 NSTextField 和另一个自定义视图。NSTextField 和自定义视图对窗口大小的变化反应非常好,但我的 WebView 只是以其原始大小坐在那里。

编辑:请注意,WebView的位置会按预期更改,但大小不会。

- (void)resizeSubviewsWithOldSize:(NSSize)oldSize
    {
    NSRect superBounds = self.superview.bounds;

    // ... set frames on other subviews; works fine ...

    // Move the WebView
    NSRect oldFrame = webView.frame;
    [self setNeedsDisplayInRect:oldFrame];
    NSRect newFrame = NSMakeRect(superBounds.origin.x, 55.0, superBounds.size.width, superBounds.size.height - 55.0);
    [webView setFrame:newFrame];

    // This doesn't work:
    // [[[[webView mainFrame] frameView] documentView] setNeedsDisplay:YES];

    // Neither does this:
    // [webView setNeedsDisplayInRect:newFrame];
    }

有什么建议么?

4

1 回答 1

0

我自己可能已经解决了这个问题。关闭 Interface Builder 中的“自动布局”功能。我从来都不喜欢 IB 中的任何自动布局功能。我更喜欢在代码中进行自己的布局(更容易存档、查找、更改、复制等)。我已经在 iOS 中工作了一段时间,之前还没有遇到过 Auto Layout。

因此,问题中引用的代码末尾的注释行都不是必需的 - 只需设置框架即可。

于 2013-08-08T17:02:19.653 回答