我知道之前已经提出这个问题,但我似乎无法使任何解决方案有效。我的按钮设置了AutoLayout,但为了让它们适合iPhone 4,我需要缩短它们。
我有这个,我在viewDidLoad,viewDidAppear和viewDidLayoutSubviews中试过(我真的不关心它在哪里工作)
for button in choiceButtons! {
if smallScreen {
button.frame = CGRect(x: button.frame.origin.x, y: button.frame.origin.y, width: button.frame.width, height: 15)
println("small")
} else {
button.frame = CGRect(x: button.frame.origin.x, y: button.frame.origin.y, width: button.frame.width, height: 55)
button.frame.size.height = 55 //second attempt (what I'd really like to work)
print("big")
}
}
print语句正确执行,所以我知道它有效。我已经检查了所有四个按钮的“占位符在构建时删除”选项。我已经尝试完全从AutoLayout中的按钮中删除高度约束(这是无关紧要的,我只是想让XCode不要对我大吼大叫)。完全以编程方式创建所有四个按钮似乎很乏味,但如果没有其他选择可行,但我觉得我想要做的事情应该不会太困难。对于它的价值,如果我将完全相同的代码应用于图像,它就可以工作。不是我的按钮。
答案 0 :(得分:4)
在Interface Builder中,为每个按钮的高度创建实际约束(不是占位符),并为约束创建出口集合。
for heightConstraint in heightConstraintsForChoiceButtons! {
if smallScreen {
heightConstraint.constant = 15
println("small")
} else {
heightConstraint.constant = 55
print("big")
}
}
答案 1 :(得分:2)
有一个很多更好的方法可以做到这一点,这可以防止您对约束产生的混淆。将其设为按钮子类并覆盖intrinsicContentSize
。现在按钮会将本身的大小调整到正确的大小,您可以保留所有其他约束。
答案 2 :(得分:1)
您需要自己操纵约束常量。将您的身高限制与您的代码相关联,并执行以下操作:
heightConstraint.constant = x
将此代码放在viewDidLayoutSubviews