[英]Centering a UILabel in a UITextView using NSLayoutConstraints
[英]Determine UILabel height for centering when using adjustFontSizeToFitWidth
我具有以下單元格設計,其中數字標簽會縮小,“ Overall”標簽正下方。
我已經正確設置了adjustFontSizeToFitWidth
和minimumFontSize
屬性。 字體大小正確調整。 然而,將數字標簽錨定到底部是具有挑戰性的。 特別是當字體縮小時,兩個標簽之間的間隙會加寬,並且不會垂直居中。
我曾嘗試sizeToFit
, sizeThatFits
,並使用該字體的pointSize
。 一切都不成功。
我知道sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:
但不明白為什么我需要將它與adjustFontSizeToFitWidth
結合使用。
嗯,所以您想將UILabels
放置在容器視圖的中間(水平和垂直方向)?
我已改寫了我的答案,這樣對將來的讀者會更有意義。
我的代碼假設您已經設置了3個IBOutlets:
UIView *containerView; //Your nice view containing the two textfields.
UILabel *points; //The label containing the number.
UILabel *overall; //The textfield containing the text 'overall'.
您可以在分配文本並調用sizeToFit
之后簡單地設置標簽的框架。
第一行UILabel
點,唯一的變化是y坐標是containerView
一半減去其高度的一半。
points.frame = CGRectMake(points.frame.origin.x, (containerView.frame.size.height / 2) - (points.frame.size.height / 2), points.frame.size.width, points.frame.size.height);
要相應地定位overall
-假設數字和整體標簽之間的距離為6。
int space = 6; overall.frame = CGRectMake(overall.frame.origin.x, points.frame.origin.y + points.frame.size.height + space, overall.frame.size.width, overall.frame.size.height);
閱讀您的評論后,我認為您正在尋求這種解決方案。 如果您希望兩個UILabels
都出現在中間, 像這樣從points
的y值中減去(overall.frame.size.height / 2) + (space / 2)
(下面是數字2的代碼):
int space = 6; points.frame = CGRectMake(points.frame.origin.x, ((containerView.frame.size.height / 2) - (points.frame.size.height / 2)) - ((overall.frame.size.height / 2) + (space / 2)), points.frame.size.width, points.frame.size.height); overall.frame = CGRectMake(overall.frame.origin.x, points.frame.origin.y + points.frame.size.height + space, overall.frame.size.width, overall.frame.size.height);
最后一點將產生類似於此圖像的輸出。 如您所見,藍線是整個圖像的一半,並且在其中間點與黑色矩形(緊緊圍繞兩個標簽)相交。 我希望這就是你所追求的。
而不是使用兩個標簽,而是使用CATextLayer
。 您將可以輕松地將一個零件設為粗體,將另一個零件設為正常。 加上放置位置和調整一層的尺寸,相對於放置兩個標簽來說將變得容易。 陰影設置,換行模式,字體,您將可以對所有內容進行精美調整:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.