[英]Change size of UIButton programmatically with Swift
我知道之前曾有人問過這個問題,但我似乎無法使任何解決方案都起作用。 我使用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")
}
}
打印語句正確執行,所以我知道這可行。 我已經檢查了所有四個按鈕的“在構建時刪除占位符”選項。 我試圖從AutoLayout的按鈕中完全消除高度限制(這無關緊要,我只是想防止XCode對我大吼大叫)。 完全以編程方式創建所有四個按鈕似乎很乏味,但如果沒有其他選擇,可以這樣做,但是我覺得我要嘗試的操作應該不會太困難。 對於什么值,如果我將完全相同的代碼應用於圖像,它就可以工作。 只是不是我的按鈕。
在Interface Builder中,為每個按鈕的高度創建實際約束(而不是占位符),並為約束創建一個插座集合。
for heightConstraint in heightConstraintsForChoiceButtons! {
if smallScreen {
heightConstraint.constant = 15
println("small")
} else {
heightConstraint.constant = 55
print("big")
}
}
有一種更好的方法來做到這一點,這將阻止你與制約具有混淆。 將其設置為按鈕的子類,並覆蓋intrinsicContentSize
。 現在,按鈕將自動將其大小調整為正確的大小,您可以將所有其他約束保留在原處。
您需要操縱約束常數本身。 將高度約束鏈接到代碼,然后執行以下操作:
heightConstraint.constant = x
將此代碼放入viewDidLayoutSubviews
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.