2014-11-24 58 views
0

如果有方法檢測UILabel是否存在換行符,我希望在填充多個UILabel後檢測UITableView的每個UITableViewCell。因爲我想動態設置其框架。我需要這樣做,因爲我有一個UILabel在另一個的頂部,而UILabel下面的其他每個行都必須與另一個具有相同的距離。檢測UILabel換行符。將項目動態放入UITableViewCell中

我只找到的性質的UILabelnumberOfLines我意識到,這取決於器件(iPhone 6,6 Plus和其餘部分),的UITableViewCell變化寬度。所以它直接影響到UILabel空間。我可以計算UILabel的長度,並根據它的不同,根據這個長度更改下面的那個UILabel的框架,但我不喜歡這種方式。

任何幫助?

謝謝

回答

1

你不需要檢測換行符來做到這一點。你應該使用自動佈局。您應該在頂部標籤的底部和底部標籤的頂部之間設置一個垂直間距約束 - 無論標籤擴展到什麼尺寸,都會給它們一個固定的間距。

+0

好,和類型的約束有我添加到UITableViewCell的視圖的其餘元素。因爲使用Xcode的Add missing constraints幫助模式只是把所有東西都搞砸了。 – santibernaldo 2014-11-26 11:59:24

+0

@santibernaldo,您需要從單元格的頂部經過任意視圖的約束到彼此的底部 - 因此需要一系列將單元格的頂部和底部與視圖和空格相連接的約束條件。 – rdelmar 2014-11-26 16:14:56

+0

我修正了你的意見,謝謝rdelmar。對不起,以前沒有回覆! – santibernaldo 2014-12-24 11:36:34

1

我會嘗試用給定的字體測試給定文本的高度。通過這種方式,您將知道文本佔據了多少行(當然,如果有折行但您不知道在哪裏)。首先,你必須計算的文字大小:

CGRect rect = [yourStrign boundingRectWithSize:CGSizeMake(yourLabelWidth, MAXFLOAT) 
             options:NSStringDrawingUsesLineFragmentOrigin 
            attributes:@{NSFontAttributeName: yourFont} 
             context:nil]; 

現在,知道你只需要進行分割的行數:

return ceil(rect.size.height/yourFont.lineHeight);