我正在尝试在一个干净的UIViewController中添加一个UIWebView,它在我的Storyboard中嵌入了一个导航控制器:
UIWebView *webView =[[UIWebView alloc] initWithFrame:self.view.bounds)];
webView.delegate = self;
[self.view addSubview:webView];
问题是,self.view.bounds.size.height是460,它似乎是整个视图的高度,包括导航栏。我可以减去self.view.frame.origin.y的值,它是20,得到440的所需高度,但是有更常见的方法吗?
修改
请在此处查看我的小代码示例:http://uploads.demaweb.dk/WebViewTest.zip
当您向下滚动到UIWebView的底部时,Web站点的最后部分不会显示,因为webView是高的。
![在此处输入图片说明] [1]
答案 0 :(得分:2)
<强>解决方案强>
在UIWebView中设置autoresizingMask
解决了我的问题:
self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
答案 1 :(得分:0)
默认高度为480,460 - 没有状态栏的高度。 44px - 导航栏的高度(你可以访问高度,因为它是UIView - navBar.frame.size.height)。因此,您的视图高度为480-20-44 = 416.您需要从self.view.frame.size.height
减去origin.y
答案 2 :(得分:0)
不要担心。导航控制器负责调整其管辖范围内视图控制器的view
的大小。您只能覆盖此视图的框架,如果您希望它是例如更小以适应其超级视图的其他子视图。
答案 3 :(得分:0)
self.edgesForExtendedLayout = UIRectEdgeNone;
更多信息:
答案 4 :(得分:0)
除了使用topLayoutGuide
(以及可选bottomLayoutGuide
)之外,我还没有找到更好的解决方案。
即,将您的视图添加到控制器的self.view
并设置这些约束:
"H:|[view]|"
"V:[top][view][bottom]"
top
为self.topLayoutGuide
且bottom
为self.bottomLayoutGuide
。
例如,请参阅AutolayoutHelper中的configureViewController:fillWithSubView:
方法。