簡體   English   中英

確定使用AdjustFontSizeToFitWidth時居中的UILabel高度

[英]Determine UILabel height for centering when using adjustFontSizeToFitWidth

我具有以下單元格設計,其中數字標簽會縮小,“ Overall”標簽正下方。

在此處輸入圖片說明

我已經正確設置了adjustFontSizeToFitWidthminimumFontSize屬性。 字體大小正確調整。 然而,將數字標簽錨定到底部是具有挑戰性的。 特別是當字體縮小時,兩個標簽之間的間隙會加寬,並且不會垂直居中。

我曾嘗試sizeToFitsizeThatFits ,並使用該字體的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 之后簡單地設置標簽的框架。

  1. 第一行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); 
  2. 要相應地定位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); 
  3. 閱讀您的評論后,我認為您正在尋求這種解決方案。 如果您希望兩個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM