我一直在Google上搜索,似乎无法找到我有问题的答案。根据设备垂直尺寸自动设置UIView垂直尺寸(包括自动布局更改)
我正在写一个应用程序,并希望子UIView的垂直空间,以保持设备的高度或父设备的旋转,而不管方向如何,并且不提前对值进行硬编码。
我的布局结构为:
ViewContainer
UIView
UIScrollView
UIView (Content View)
具体来说,我想有内容查看初始设置是设备/取向的原生高度的垂直空间,它正在运行在设备旋转时,我希望垂直空间更改为新的垂直高度。 UIScrollView将仅用于水平平移。
我将使用Quartz在视图中绘制。我是否通过intrinsicContentSize
设置初始高度?如果是这样,我该如何查询父视图?
我试过在内容视图中使用self.superview
,但这不起作用。如何检测到发生了变化,发生变化后,如何获得新的Y分辨率,然后应用它?另外我不想禁用自动布局,如果我不必。
这是一个视觉的我想要的东西,如果我还没有做出明确表态: https://www.evernote.com/l/AAI3VFkKBARPlYPsoURJOwAmIiGielF5p-w
我会根据'UIScreen.mainScreen()。bounds.size.height'(或横幅,如果你在横向)的大小。然后使用'UIDeviceOrientationIsLandscape()'宏。还有其他一些人也喜欢它。看看他们。 –
我已经尝试修改TN2154中的Pure AutoLayout代码,但是我无法检测到更改(并且我不确定这是否是正确的方法来首先解决问题)。我可以通过intrinsicContentSize强制大小,但不知道如何正确检测大小,或者发生旋转的时间。我一直在看viewWillTransitionToSize,但不知道这是正确的方法。 – Tornado
要获得方向更改的通知,您可以订阅通知。不知道这是否适合您的用例,但这里是代码片段[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged :) name:UIDeviceOrientationDidChangeNotification object:nil];'然后确保您有一个名为'orientationChanged '接受'NSNotification'参数 –