iOS UIView 大小

Posted

技术标签:

【中文标题】iOS UIView 大小【英文标题】:iOS UIView size 【发布时间】:2015-06-03 12:36:01 【问题描述】:

我有一个控制器,其 4UILabels 在所有 iPhone 中的高度都是恒定的,在最后一个UILabel 下方有一个带有页面控制器的UIView(在该页面控制器内有一个TableView)。

我想要的是UIView 占据他无法达到的所有高度:

例子:600高的屏幕

4UILABELS = 200 高度 TableView = 它应该得到 400 高度

800高度的屏幕

4UILABELS = 200 高度 TableView = 它应该有 600 的高度

我还需要 1 个约束来设置视图的高度,我定义的是:

    superView 的 EqualWidth 约束 LeadingSpace 到 SuperView 超级视图的顶部空间

【问题讨论】:

到底是什么问题? 你只需要Y位置,所以你可以把你的tableview固定到底部,应该没问题。 问题是我不知道是什么约束得到了高度 【参考方案1】:

以下约束应该为您对齐所有内容,以便 UILabel 垂直堆叠,每个高度为 50,并延伸到边缘。无论屏幕大小如何,UIView 都会占用剩余空间。

所有 UILabel

将前沿固定到超级视图

将后沿固定到超级视图

添加高度约束设置为 50.0

UILabel 1:

将顶部边缘固定到超级视图顶部

UILabel 2:

将顶部边缘固定到 UILabel 1 底部

UILabel 3:

将顶部边缘固定到 UILabel 2 底部

UILabel 4:

将顶部边缘固定到 UILabel 3 底部

UIView

将前沿固定到超级视图

将后沿固定到超级视图

将顶部边缘固定到 UILabel 4 底部

将底部边缘固定到超级视图

UITableView

将前导、尾随、顶部和底部固定到其容器视图,使其填充该区域。

【讨论】:

问题是当 tableView 获取数据时它会自动调整大小,调整我的视图大小(即使 tableview 没有自动布局 持有页面视图控制器的视图是否在 UILabel 上方移动?你到底看到了什么?您需要确保表格视图设置为滚动。还要确保页面视图固定在边缘。 在一个新问题上进行了解释,因为那里的问题不同 -> ***.com/questions/30641565/…【参考方案2】:

我假设您是在 Storyboard 中创建这个 UIViewController。

您应该能够将所有标签放在一个容器视图中,按照您的指定,该容器视图具有 200 磅的恒定高度。从“顶部布局指南”到所述容器视图进行垂直约束,可能值为 0。拖动 UITableView 并将其放在容器视图下方。不要给它任何关于高度的限制。在容器视图(底部)和 UITableView(顶部)之间设置垂直间距,值为 0,在 UITableView(底部)和底部布局指南之间设置垂直间距,值为 0。

原来如此(V:0表示垂直间距,常数0):

顶部布局指南 V:0容器视图 - 高度:200 V:0TableView(动态高度) V:0底部布局指南

这应该可行。

(当然,您需要为容器视图中的每个 UILabel 创建关于宽度的约束以及内部约束。如果您需要帮助,请告诉我。)

【讨论】:

以上是关于iOS UIView 大小的主要内容,如果未能解决你的问题,请参考以下文章

iOS UIView 大小

如何在iOS中将输出(UIView)导出为指定大小的图像

获取与屏幕大小 iOS 相关的 UIView 原点

当 UILabel 动态调整大小时,在 UIView 中移动 UIButton。 iOS

iOS UIView drawRect 调整大小动画

iOS:UIView 在动画时改变大小,我该如何防止?