我正在为视图控制器设计两个布局,使用两个大小类。 对于某些视图,有一些属性我希望根据大小类具有不同的值。
例如,有一个标签,我需要在一个尺寸类中居中对齐,但在另一个尺寸类中右对齐;视图的背景应该在一个类中具有alpha /半透明值,而在另一个类中具有另一个值。
但是,考虑到我正在编辑的大小类,看起来无法设置这些属性。如果我在一个班级中改变它,它也会反映在其他班级中。
是否有正确的方法,或者可能是一种解决方法(以编程方式?),它允许我为不同的类设置不同的值?
答案 0 :(得分:1)
AFAIK,您可以根据大小类在IB中更改的唯一内容是层次结构中的视图,大小/位置和文本字体。
您可以使用self.traitCollection.horizontalSizeClass
和self.traitCollection.verticalSizeClass
在视图控制器中以编程方式检查尺寸类,并根据值更改视图属性。
您还希望实现willTransitionToTraitCollection:withTransitionCoordinator:
以在视图出现后处理大小等级中的可能更改。
答案 1 :(得分:0)
您可以通过检查屏幕的bounds
值并相应地应用更改来以编程方式执行此操作:
if UIScreen.mainScreen().bounds.size.width == 768 {
// iPad, which corresponds to the regular class
myImage.alpha = 1.0
} else {
// Every iPhone model, which is the compact class
myImage.alpha = 0.5
}
或更准确地说:
if UIScreen.mainScreen().bounds.size.height == 480 {
// iPhone 4
} else if UIScreen.mainScreen().bounds.size.height == 568 {
// iPhone 5
} else if UIScreen.mainScreen().bounds.size.width == 375 {
// iPhone 6
} else if UIScreen.mainScreen().bounds.size.width == 414 {
// iPhone 6+
} else if UIScreen.mainScreen().bounds.size.width == 768 {
// iPad
}