我在iOS8中使用TraitCollectionDidChange检测Regular和Compact大小类。
我试图在屏幕上水平放置一组特定的数据,但它不适用于Portrait iPad Mini上的Horizontal Class Regular,但是Landscape中会有足够的空间。
问题是,在Size和Landscape中,Horizontal SizeClass是 Regular ,因此TraitCollectionDidChange不会触发,我也不会被告知方向更改。
我听过viewWillTransitionToSize
的引用,但在UIView中没有。
Apple是否说他们不希望水平类常规的UI布局差异 - 纵向和水平类常规 - 风景?
如果可以,我会如何在 UIView 中告知有关方向更改?
答案 0 :(得分:12)
只需将方法 - (void)layoutSubviews添加到您的UIView子类中。每当视图的尺寸发生变化时,它都会被调用。不要忘记在新方法中调用[super layoutSubviews]。
然后你可以查看self.traitCollection.verticalSizeClass和self.traitCollection.horizontalSizeClass来查看你在看什么。
-(void) layoutSubviews
{
[super layoutSubviews];
// your code here...
}