1. 程式人生 > >iOS-限制UILabel寬度自適應的最大寬度

iOS-限制UILabel寬度自適應的最大寬度

官方 eterm tps rip 一個 alt lines lin uil

前言

一個需求,要求UILabel寬度自適應到指定寬的時候然後限制其寬度,不再需要寬度自適應
, 並且需要UILabel後面的控件緊跟其後,如下圖
技術分享圖片

好的.直接進入正題
技術分享圖片

UIlabel有一個屬性叫preferredMaxLayoutWidth,官方解釋是:

  • // Support for constraint-based layout (auto layout)
  • // If nonzero, this is used when determining -intrinsicContentSize for multiline labels
  • //支持基於約束的布局(自動布局)
  • //如果非零,則在為多行標簽確定-intrinsicContentSize時使用此方法

所以我們需要設置preferredMaxLayoutWidth = 指定寬,但是這樣並不會生效,因為UIlabel默認不換行,這個屬性需要UILabel設置換行才可以生效,但是我們又需要限制在一行顯示,並且不換行
技術分享圖片

所以需要設置UIlabel的numberOfLines = 0,並限制UIlabel的高度,這樣既不會換行,又限制了最大寬度

self.name_lab.preferredMaxLayoutWidth = 170 * kScaleWidth;
self.name_lab.numberOfLines = 0;
self.name_lab.height = 20;

iOS-限制UILabel寬度自適應的最大寬度