我遇到了autolayout的问题,似乎无法找到应该很容易实现的东西的答案 .
我有以下视图层次结构:
-UIScrollview
-UIView
- UILabel
- UILabel
- UILabel
标签上的前导/尾随约束使它们在更薄的设备上更高(iPhone 4s与iPhone 6) .
为了使UIScrollview正常工作,我需要在UIScrollView内部设置UIView的高度约束,以避免出现“模糊高度”警告 .
但是当在iPhone 4s上运行时,UIView不够高,无法保存其子视图 .
到目前为止,我唯一的解决方案是在UIView上创建对高度约束的引用,并在视图出现时更新高度约束:
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
self.contentHeight.constant =self.lastLabel.frame.origin.y+ self.lastLabel.frame.size.height;
[self.view layoutIfNeeded];
}
我认为必须有一种更好的方法来做一些如此简单的事情 .
我附上了一张图片来详细说明问题 .
感谢您的时间 .
根据下面的@Katty,使宽度/高度等于scrollview的superview导致更大的问题:
3 回答
在与另一位开发人员进行审核后,我发现了这个问容器中的底部子视图需要底部约束 . 这解决了这个问题 .
感谢所有花时间帮助解决问题的人 .
您正在使用的视图层次结构是正确的 . 基本上您需要做的是在子视图中(在Scrollview内)您需要对齐自动布局w.r.t. scrollview的top,bottom,leading和trailing,需要为子视图提供Equal Height,这基本上计算了scrollview的内容大小 .
设置拖尾前导顶部相对于UIScrollView和Height以及使用具有主视图的命题比率的固定设置
首先设置等高和宽度然后设置命题乘数 . 跳过那个图像可以帮助你理解我试图解释你的内容 .