簡體   English   中英

使用Swift以編程方式更改UIButton的大小

[英]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對我大吼大叫)。 完全以編程方式創建所有四個按鈕似乎很乏味,但如果沒有其他選擇,可以這樣做,但是我覺得我要嘗試的操作應該不會太困難。 對於什么值,如果我將完全相同的代碼應用於圖像,它就可以工作。 只是不是我的按鈕。

如何使用Swift更改按鈕的高度?

無法以編程方式更改UIButton的框架。

在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM