我有一个包含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];
}
有什么建议吗?
答案 0 :(得分:0)
我可能已经解决了这个问题。关闭Interface Builder中的“自动布局”功能。我从未成为IB中任何自动布局功能的粉丝;我更喜欢在代码中进行自己的布局(更容易存档,查找,更改,复制等)。我已经在iOS上工作了一段时间,之前没有遇到过Auto Layout。
因此,在问题中引用的代码末尾没有任何注释掉的行是必要的 - 只需设置框架。