在UIView中检测iOS 8方向更改

时间:2015-04-29 14:35:27

标签: ios autolayout

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

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

问题是,在Size和Landscape中,Horizo​​ntal SizeClass是 Regular ,因此TraitCollectionDidChange不会触发,我也不会被告知方向更改。

我听过viewWillTransitionToSize的引用,但在UIView中没有。

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

如果可以,我会如何在 UIView 中告知有关方向更改?

1 个答案:

答案 0 :(得分:12)

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

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

-(void) layoutSubviews
{
    [super layoutSubviews];

    //   your code here...
}