我一直在谷歌上搜索,似乎无法找到我所拥有的问题的答案。
我正在编写一个应用程序,并希望子UIView的垂直空间保持设备的高度或父设备的旋转,无论方向如何,也不提前对值进行硬编码。
我的布局结构是:
ViewContainer
UIView
UIScrollView
UIView (Content View)
具体来说,我希望内容视图的垂直空间最初设置为当前正在运行的设备/方向的原生高度,当设备旋转时,我希望垂直空间为更改为新的垂直高度。 UIScrollView将仅用于水平平移。
我将使用Quartz在视图中绘制。我是否通过intrinsicContentSize
设置初始高度?如果是这样,我如何查询父视图?
我尝试在内容视图中使用self.superview
,但这不起作用。如何检测到发生了更改,在发生更改后,如何获取新的Y分辨率然后应用它?如果我不需要,我也不想禁用自动布局。
如果我没有说清楚,这是我想要的视觉效果: https://www.evernote.com/l/AAI3VFkKBARPlYPsoURJOwAmIiGielF5p-w
答案 0 :(得分:0)
我有一个具有相同视图层次结构的应用。
使用纯AutoLayout可以实现您想要的,具有以下约束。这里只包括垂直约束:
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[scrollView]|", options: .allZeros, metrics: nil, views: ["scrollView" : scrollView]))
scrollView.addConstraint(NSLayoutConstraint(item: contentView, attribute: .Height, relatedBy: .Equal, toItem: scrollView, attribute: .Height, multiplier: 1.0, constant: 0.0))
scrollView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[contentView]|", options: .allZeros, metrics: nil, views: ["contentView" : contentView]))
由于contentView的高度始终正确,因此无法确定是否仍希望收到方向更改的通知。