我已經看到,UILabel
內在尺寸似乎並不完全符合它包含的字符。使UILabel的高度,以適應其中包含的字符(自動佈局)
正如你可以在圖片中看到,標籤對頂部和底部一定的餘量。我可以使用基線(title.baseline == subtitle.top
)使「字幕」更接近「TITLE」,但我也想將「TITLE」與其父頂對齊。
如果可能,我想使用自動佈局約束。
我已經看到,UILabel
內在尺寸似乎並不完全符合它包含的字符。使UILabel的高度,以適應其中包含的字符(自動佈局)
正如你可以在圖片中看到,標籤對頂部和底部一定的餘量。我可以使用基線(title.baseline == subtitle.top
)使「字幕」更接近「TITLE」,但我也想將「TITLE」與其父頂對齊。
如果可能,我想使用自動佈局約束。
快速修復
如果您的字體大小是固定的標籤,你可以嘗試繼承UILabel
並覆蓋- (CGSize)intrinsicContentSize
-(CGSize)intrinsicContentSize {
CGSize intrinsicSize = [super intrinsicContentSize];
intrinsicSize.height -= 8; // Works good for system font size 17.0
return intrinsicSize;
}
您可能需要使用intrinsicSize.height -= 8;
發揮,從而獲得所需的輸出。
謝謝。我想過這樣做。這是一個相當黑客,但... - p - 我希望它適用於任何字體,大小和字符。我將不得不考慮所有這些,並「煮」一個神奇的數字。 –
字體的小寫字母下降到基線以下。內在的大小允許。 – picciano
是的,我知道。我想用我正在使用的角色的「當前」固有尺寸,而不是任何可能的角色。由於我在那裏使用大寫字母,因此我知道我不會有小寫字母。 –
我在這裏發佈了一個解決方案:http://stackoverflow.com/a/34073666/1121497 –