簡體   English   中英

自動布局:標題視圖逐漸包含 UILabel + UIButton

[英]Autolayout: Title View that Grows to Encompass UILabel + UIButton

我正在自定義視圖控制器的標題視圖,以便顯示(從左到右):

  1. 一個與默認標題標簽非常相似的 UILabel,
  2. 類型為 info 的 UIButton,位於標簽之后固定距離處。

我希望,隨着標簽水平增長以容納更長的文本,它將按鈕向右推得更遠(標簽和按鈕之間的水平空間保持不變),而整個標題視圖會調整自身大小以包含標簽和按鈕,同時保持居中在導航欄中。

這就是我所做的(界面生成器):

  1. 將一個 UINavigationItem 拖入導航欄;
  2. 將一個 UIView 拖入導航項中,作為標題視圖;
  3. 將標簽和按鈕拖到標題視圖中,定位並調整大小。
  4. 設置以下約束:

    標簽 -> 標題視圖:

    1. 領先的空間到集裝箱保證金
    2. 在容器中垂直居中

    按鈕 -> 標題視圖:

    1. 到集裝箱邊距的尾隨空間
    2. 在容器中垂直居中

(標題視圖本身不受約束)

但是,標題視圖保持固定大小。 如果在運行時我設置的標題比故事板中設置的占位符長,它會被修剪(“...”):

在此處輸入圖片說明

相反,如果我設置了一個較短的,標簽和按鈕之間會出現額外的空間:

在此處輸入圖片說明

或者,如果我添加以下約束:

標簽 -> 按鈕: 1. 水平間距

...現在按鈕被標簽完全隱藏:

在此處輸入圖片說明

我怎樣才能讓標題視圖水平增長(同時保持居中),以便它適合(靈活)標簽和(固定)按鈕,並保持它們之間的空間固定?

導航項未設置為直接處理此問題。 您需要使用約束來設置標題視圖的框架,然后將其添加到 nab 項中。 因此,每次更改文本時,您都需要通過刪除視圖、調整其大小然后再次添加它來做一些舞蹈。 關鍵 API 是systemLayoutSizeFittingSize

將按鈕的約束更改為水平空間以進行標簽

按鈕 -> 標題視圖:

要標記的水平空間

在容器中垂直居中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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