我正在尝试为iPad和iPhone(4'')设置不同的约束。
我为iPhone设置了常规高度和紧凑宽度限制。但这些限制显示在7.9英寸的iPad,9.7英寸iPad上。
这些约束适用于模态视图。
如何使我的常规高度和紧凑宽度限制仅限于我的iPhone。
答案 0 :(得分:4)
因为iPad上的表格表格是紧凑的宽度和规则的高度,所以它正在受到这些限制。
Formsheet ios 8 constraints are same as iphones constraints
解决方案是覆盖Preased视图控制器中的traitCollection
override var traitCollection: UITraitCollection
{
if UIDevice.isIPad()
{
let traits = UITraitCollection(horizontalSizeClass: UIUserInterfaceSizeClass.Regular)
let traits2 = UITraitCollection(verticalSizeClass: UIUserInterfaceSizeClass.Regular)
let traitCollection = UITraitCollection(traitsFromCollections: [traits, traits2])
return traitCollection
}
else
{
return super.traitCollection
}
}
答案 1 :(得分:0)
请注意,iOS文档对traitCollection
发出以下警告:
直接使用traitCollection属性。不要覆盖它。不提供自定义实现。
已知,这是一个Obj-C解决方案,它结合了super
特征与更新的水平/垂直特征:
- (UITraitCollection *)traitCollection {
UITraitCollection *traitCollection = [super traitCollection];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
UITraitCollection *horizontalTraitCollection = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
UITraitCollection *verticalTraitCollection = [UITraitCollection traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassRegular];
traitCollection = [UITraitCollection traitCollectionWithTraitsFromCollections:@[traitCollection, horizontalTraitCollection, verticalTraitCollection]];
}
return traitCollection;
}