2016-03-08 138 views
2

你好現在我正在學習Autolayout。我提前提出一個簡單的問題,表示歉意。Autolayout uilabel autosize tableView cell

enter image description here

我想知道我怎麼可以讓rightLabel這是拉合爾,PK收縮或自動調整大小,並保持國家標籤(左側),以它的位置。我已經使用了一些約束條件,但它將國家標籤移出屏幕。這就是我在單元格中所做的事情,也請告訴我,如果我做得對,或者如果不行請告訴我什麼是更好的方法。

國家

  1. 我首先countryLabel設置爲Center Vertically To TableViewCell
  2. 我已經左限制設置爲14分
  3. 我已經鎖定高度到22點

LAHORE,PK

  1. 我已經鎖定了高度
  2. 設置countryLabel到Center Vertically To TableViewCell
  3. 我設置拉合爾,PK和國家之間的水平間距
  4. 設置權制約0

我是問題如果在標籤的右側出現較大的文本,則在左側的國家/地區標籤移出屏幕

回答

0

可疑約束到我是:

LAHORE,PK

  • 我設置拉合爾,PK和國家之間的水平間距
  • 刪除它。增加這一個:

    拉合爾,Pk和superview的尾部空間。控制並從拉合爾,Pk標籤拖到內容視圖的單元格,並選擇trailing space to container margin to zero.

    在拉合爾,PK和國家之間設置水平空間將您的標籤推到視圖的右側。

    試試吧,讓我知道它還有一個問題。

    希望這可以幫助。

    +0

    非常感謝 – user1hjgjhgjhggjhg

    0

    最簡單的方法這樣做是爲了將兩者放在水平堆棧視圖中,然後給左邊的標籤(不應該調整大小的那個)更高的擁抱優先權和抗壓性。

    當然你也可以使用舊學校自動佈局仍然重要的因素是擁抱優先和壓縮阻力。

    +0

    StackView在iOS 9.0及更高版本中可用。 –

    0

    首先,您不應該爲具有固有內容大小的視圖設置固定高度,標籤就是其中之一。

    您目前設置的約束有兩個問題,一個是,您在國家兩個標籤之間設置了Horizo​​ntalSpacing,它必須有一些固定的常量點,所以當您運行應用程序時會發生什麼情況Auto layout is breaking the LeadingSpace限制First(左)標籤並將其移到屏幕外。那麼,怎樣才能防止這種情況發生,

    1. 如果你有兩個標籤,水平對齊,它們之間則不能設置固定點水平間距,設置標準間距,而不是下面,

    enter image description here

    1. 現在您會看到約束中的歧義,如果兩個標籤都具有無法在屏幕上顯示的大文本,哪個標籤應該優先顯示文本,所以要解決這個變化水平內容擁抱優先y從251到252之間的一個標籤,並更新該幀。

    enter image description here

    enter image description here

    enter image description here

    所以最終約束:

    國家標籤:

    enter image description here

    Lahore.PK

    enter image description here

    希望這會幫助你。