在UIView中检测iOS 8方向更改

Pat*_*bee 4 ios autolayout

我在iOS8中使用TraitCollectionDidChange检测Regular和Compact大小类.

我试图在屏幕上水平放置一组特定的数据,但它不适用于Portrait iPad Mini上的Horizo​​ntal Class Regular,但是Landscape中会有足够的空间.

问题是Horizo​​ntal SizeClass 在纵向和横向上是常规的,因此TraitCollectionDidChange不会触发,我也不会被告知Orientation更改.

我听过参考viewWillTransitionToSize但是在UIView中没有.

Apple是否表示他们不希望水平类常规的UI布局差异 - 纵向和水平类常规 - 风景?

如果可以这样做,我如何在UIView中告诉我们方向改变?

ame*_*gin 12

只需将方法 - (void)layoutSubviews添加到您的UIView子类中.每当视图的尺寸发生变化时,它都会被调用.不要忘记在新方法中调用[super layoutSubviews].

然后你可以检查self.traitCollection.verticalSizeClass和self.traitCollection.horizo​​ntalSizeClass来看看你在看什么.

-(void) layoutSubviews
{
    [super layoutSubviews];

    //   your code here...
}
Run Code Online (Sandbox Code Playgroud)