1

我一直在谷歌上搜索,似乎无法确定我的问题的答案。

我正在编写一个应用程序,并且希望子 UIView 的垂直空间能够保持设备的高度或父设备的旋转,无论方向如何,并且无需提前对值进行硬编码。

我的布局结构是:

ViewContainer
  UIView
    UIScrollView
      UIView (Content View)

具体来说,我希望内容视图的垂直空间最初设置为当前运行的设备/方向的本机高度,并且当设备旋转时,我希望垂直空间更改为新的垂直高度。UIScrollView 将仅用于水平平移。

我将使用 Quartz 在视图中绘制。我是否通过设置初始高度intrinsicContentSize?如果是这样,我如何查询父视图?

我试过self.superview在内容视图中使用,但这不起作用。如何检测发生了变化,发生变化后,如何获取新的 Y 分辨率然后应用它?如果不需要,我也不想禁用自动布局。

如果我没有说清楚,这是我想要的视觉效果: https ://www.evernote.com/l/AAI3VFkKBARPlYPsoURJOwAmIiGielF5p-w

4

1 回答 1

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 的高度始终正确,因此不确定您是否仍希望收到有关方向更改的通知。

于 2015-05-12T05:38:17.593 回答