2016-03-31 73 views
0

我知道有類似的主題,但不幸的是,他們的解決方案無法正常工作。我有一個帶有特定字體的標籤,左側的限制等於16,右側的限制等於16。因此,對於計算預期的文本高度我用這樣的:如何使用自動佈局正確計算標籤尺寸

CGSize labelSize = [[strMod fineHtmlFromString:mdl.content] sizeWithFont:self.contentLabel.font 
                   constrainedToSize:CGSizeMake(SCREEN_WIDTH - 32, (FLT_MAX)) 
                    lineBreakMode:NSLineBreakByWordWrapping]; 

     self.heightFullSizeLabel = labelSize.height; 

32是一個數字,那就是很容易作爲16 + 16(約束縮進)來計算。 SCREEN_WIDTH被定義爲#define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width

不幸的是,有了這個邏輯我得到了較小的高度,我想要的,所以我不得不增加32個數字到40.有沒有一種方法來精確計算標籤高度與佈局動態?

+0

爲什麼要計算它的高度? – Shai

+0

計算主卷軸的最終高度。 –

回答

1

知道文本容器的大小正確的方法是使用-sizeToFit-sizeThatFits:(CGSize)size
您使用的只是要求文本佔用的區域,但它沒有考慮到可以應用的填充或其他視圖相關的東西。
如果您使用包含大量填充的UItexView,您可以在計算中看到巨大差異

+0

謝謝,如果你糾正我的代碼片段,會不會很好,你會如此善良? –

+0

沒有那麼困難,只需將文本添加到標籤send sizeToFit或sizeThatFits,然後讀取標籤的邊界,然後設置self.heightFullSizeLabel。 – Andrea

+0

你的意思是我應該只添加[label sizeToFit];我宣佈之後呢? –

1

用您的標籤字體嘗試此操作。

CGRect textRect = [text boundingRectWithSize:size 
            options:NSStringDrawingUsesLineFragmentOrigin 
            attributes:@{NSFontAttributeName:FONT} 
            context:nil]; 

    CGSize size = textRect.size; 
    self.heightFullSizeLabel = size.height;