2017-07-25 54 views

回答

0

如果你想做到這一點,你可以創建自定義視圖:採取 - UIView並將其級別更改爲UIButton並添加UILabel並應用所有必需的約束。 有了這一切設置,你可以實現願望的用戶界面。 請試試這個如果你想實現這樣的。

-1

如果你想根據標籤文本改變按鈕的寬度,

1.dont固定標籤寬度

2.Now,在標籤寬度即equalwidths取決於按鈕的寬度。

0

Autolayout constraints

  • UILabel對象的寬度約束應該是小於 或等於關係
  • UIButton對象的寬度約束應該是一個大 大於或等於關係
  • UILabel對象的水平內容抱死優先 應該是249(根據我上面顯示的約束設置)
  • 並將UILabel寬度常數值設置爲您的要求的最大可能值。

及相關代碼:

[buttonObject setTitle:@"Button title is ..." forState:UIControlStateNormal]; 
[buttonObject sizeToFit]; 
0

按鈕已經將它的「內在內容寬度」,以適應其標題。

如果沒有其他約束覆蓋內在內容寬度,則該按鈕將是該內在寬度,這正是您想要的。演示:

demo

這是我的故事板輪廓:

storyboard outline

我設置爲「左」(而不是「填充」)水平疊層視圖的對齊所以它不會拉伸第一行以填充屏幕寬度。

如果您的按鈕的內在寬度爲而不是,那麼您有更高優先級(可能優先級爲1000)的約束將其強制爲其他寬度。

您可以嘗試強制它始終保持其內容寬度,方法是將內容擁抱優先級和其內容壓縮優先級設置爲1000。

如果您將兩個優先級都設置爲1000,並且您有任何其他必需的約束可阻止該按鈕成爲其固有大小,那麼您將在運行時的調試日誌中收到錯誤消息,告訴您存在衝突(不可滿足的)約束。這些消息將包含完整的約束條件,因此您可以嘗試追蹤您不想要的約束條件。

+0

感謝@rob,我有一些問題: 限制你到按鈕給出什麼?有沒有依賴堆棧視圖? –

+0

我沒有對按鈕設置任何約束。頂層(垂直)堆疊視圖具有約束到上海華的頂部,導致,和後緣。文檔大綱顯示了我創建的每個約束。 –

+0

如果我不想使用堆棧視圖,該怎麼辦? –