我实际上为Swift 5.0更新了以下扩展名(在此处找到:Size class specifically for portrait 3.5 inch (iPhone 4S) XCode 6?),并且当修改的约束具有“针对特征变化”属性并且我无法执行时,它可以正常工作,除了 弄清楚为什么?
extension NSLayoutConstraint
{
//We use a simple inspectable to allow us to set a value for iphoneSE / 5s.
@IBInspectable var iPhoneSE_PortraitConstant: CGFloat
{
set{
//Only apply value to iphone SE and 5s devices.
if (UIScreen.main.bounds.size.height < 660 && UIScreen.main.bounds.size.width < 330)
{
self.constant = newValue;
}
}
get
{
return self.constant;
}
}
}
我猜想Xcode首先找到约束,然后他们查看它是否具有Vari for Traits加法,因此忽略了扩展名?我该如何克服?
答案 0 :(得分:0)
基于快速测试,显示顺序如下:
iPhoneSE_PortraitConstant
),它设置了约束的 .constant
.constant
( 不 设置iPhoneSE_PortraitConstant
属性)因此,如果约束本身具有特征变化,则该扩展将不起作用。
关键是约束本身。
要使这种方法起作用,不要在约束上设置特征变量,而在视图上设置特征变量并具有两个(或更多)单独的约束。然后根据需要在约束上设置iPhoneSE_PortraitConstant
。