2016-03-02 29 views
1

我有我的應用程序中存儲在UITableView用戶的列表。Autoshrink標籤,但保持相同的字體大小爲每個其他UITableViewCell

每個單元都有一個存儲用戶名稱的標籤。

我需要所有這些標籤保持相同的大小。

我的主要問題是自動調整大小的字體爲每個名字標籤會導致多種不同的標籤尺寸的實現代碼如下

因此,例如 裏面的「湯姆·史密斯」短,所以字體大小是最大 「湯米Smithenson」 ,更長。在較小的設備上可能會調整大小 「Smitty Werbenjagermanjensen」絕對太長,會調整大小。

我需要每個tableView單元格根據內容更新其UILabel字體大小,如果標籤縮小,縮小所有。

我不認爲黑客工作從cellForRowAtIndexPath將工作,因爲當你滾動一個更大的名字可能會出現導致一些單元格具有不同大小的標籤,至少直到我再次滾動他們,他們出列。

在這一點上,我不知道如何與Autolayout,我更喜歡這樣做。

關於如何最好地完成此任何想法?

+0

只是爲了清除,在更大的設備 - 湯米史密森森和小型設備湯姆.... nson你想要這樣嗎? – UIResponder

+0

現在,我不想包裝,我想調整大小以適合它 – YichenBman

回答

2

您有兩種選擇。

1)靜態的方法 - 在你展示你的表視圖列表中,找到您的聯繫人列表中的最長的名稱,使用功能

func boundingRectWithSize(_ size: CGSize, 
       options options: NSStringDrawingOptions, 
      attributes attributes: [String : AnyObject]?, 
       context context: NSStringDrawingContext?) -> CGRect 

計算出滿足設計要求,字體大小和該字體大小設置爲所有細胞。

2)DYNAMIC APPROACH - 按照您現在的單元格開始,一旦單元格獲得layoutSubviews,使用通知中心發佈當前大小,並在所有其他單元格中偵聽此通知,並且如果大小爲小於他們當前的那個,應用它。

0

嘗試設置,

  1. 行0中的UILabel
  2. 設置最小高度和寬度標籤
  3. 在標籤的所有4個邊設置的約束。
相關問題