调整 UIViewController 中的视图大小

Posted

技术标签:

【中文标题】调整 UIViewController 中的视图大小【英文标题】:Resize the View inside a UIViewController 【发布时间】:2013-04-12 10:01:04 【问题描述】:

我在 Storyboard 应用程序中有一个 UIViewController

在设置 segue 时会自动添加导航栏,并且我已从 IB 将UIToolBar 添加到底部。

在运行时,UIScrollView 作为视图添加到视图控制器。导致的问题是它与之前添加的UIToolBar 重叠。所以我添加了以下行并将工具栏拉回前面。

self.mailOptionsToolbar.layer.zPosition = 1;

现在看起来不错,但还有一个小问题。当我单击UIToolBar 中的工具栏按钮项时,它们不起作用。比如说,在滚动视图中,如果 UITextbox 位于这些按钮的正下方,当我单击它们时,它会弹出键盘!就像点击通过UIToolBar 下降到下面的 UITextField 一样。我怎样才能阻止这种情况发生?

我也在想另一种方法。那就是调整UIScrollBar 的大小以仅适合空白区域,这样它就不会首先覆盖UIToolBar,从而不会产生这个点击问题。但我不知道如何使在运行时添加的UIScrollView 仅适合白色区域。

我们将不胜感激对这两个方面的建议。

谢谢。

【问题讨论】:

【参考方案1】:
    CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;
    // 20.0f is for status bar height and 44.0f is for navigation bar
    CGFloat scrollViewHeight = screenHeight - 20.0f - 44.0f - self.mailOptionsToolbar.frame.size.height;
    CGRect frame = [CGRectMake(0, 0, 320.0f, scrollViewHeight)];
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:frame];

【讨论】:

以上是关于调整 UIViewController 中的视图大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Interface Builder 中的 UIViewController 中自动调整 UIView Outlet 的大小

UIViewController 中的重载数据

适当调整 UIViewController 的视图大小

UIViewController 的视图奇怪的调整大小行为

UIViewController 的视图未由 viewWillAppear() 调整大小 [重复]

父 UIViewController 调整容器视图大小时,子视图控制器不自动布局