Ios 根据设备垂直尺寸自动设置UIView垂直尺寸(包括自动布局更改)

Ios 根据设备垂直尺寸自动设置UIView垂直尺寸(包括自动布局更改),ios,uiview,uiscrollview,ios-autolayout,Ios,Uiview,Uiscrollview,Ios Autolayout,我一直在用谷歌搜索这个问题,似乎无法找到我所面临问题的答案 我正在编写一个应用程序,希望子UIView的垂直空间能够保持设备的高度或父设备的旋转,而不考虑方向,并且不提前硬编码值 我的布局结构是: ViewContainer UIView UIScrollView UIView (Content View) 具体地说,我希望内容视图的垂直空间最初设置为它当前运行的设备/方向的本机高度,并且当设备旋转时,我希望垂直空间更改为新的垂直高度。UIScrollView将仅用于水

我一直在用谷歌搜索这个问题,似乎无法找到我所面临问题的答案

我正在编写一个应用程序,希望子UIView的垂直空间能够保持设备的高度或父设备的旋转,而不考虑方向,并且不提前硬编码值

我的布局结构是:

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

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

我已经尝试在内容视图中使用self.superview,但这不起作用。如何检测已发生的更改,以及在更改发生后,如何获取新的Y分辨率并应用它?此外,我不想禁用自动布局,如果我没有必要

如果我没有说清楚,下面是我想要的视觉效果:
我有一个应用程序具有相同的视图层次结构

使用纯自动布局可以实现所需的功能,并具有以下约束条件。此处仅包括垂直约束:

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

如果你是在风景区,我会根据UIScreen.mainScreen.bounds.size.height或width的大小来计算。然后使用UIDeviceOrientationIsLandscape宏。还有一些人也喜欢它。我已经尝试过修改TN2154中的纯自动布局代码,但我无法检测到更改,也不确定这是否是解决问题的正确方法。我可以通过intrinsicContentSize强制大小,但不确定如何正确检测大小,或者何时发生旋转。我一直在看ViewwillTransitionOnToSize,但也不确定这是正确的方法。要获得方向更改的通知,您可以订阅通知。不确定这是否适合您的用例,但下面是代码段[[NSNotificationCenter defaultCenter]addObserver:self selector:@selectororientationChanged:name:UIDeviceOrientationIDChangeNotification对象:nil];然后确保有一个名为orientationChanged的方法,它接受NSNotification参数谢谢。这似乎让我走上了正确的道路。我现在唯一的问题是在orientationChanged调用期间强制启动intrinsicContentSize。有什么建议吗?越来越接近解决这个问题…明白了!我填充了[自我失效的内部内容];在orientationChanged方法中,它现在正在触发IntrinsicContentSize调用。再次感谢!好极了这起作用了。我想要一个纯粹的自动布局解决方案,这就成功了!非常感谢。对对不起,这是我在这里问的第一个问题,所以我在这方面有点不懂。我只需要检查一下绿色的复选标记,对吗?