[英]Adjust UILabel font size without .adjustsFontForContentSizeCategory
[英]Adjust UILabel font size for device dimension
有沒有一種方法可以將UILabel字體設置為在大設備中較大而在小設備中較小?
我是否需要以編程方式進行操作,每次檢查設備大小時都進行檢查?
現在,我的方法是這樣的:
class func hightlightPtSize(height: CGFloat) -> CGFloat {
return height / 25
}
class func notSoHighlightPtSize(height: CGFloat) -> CGFloat {
return height / 30
}
class func stdPtSize(height: CGFloat) -> CGFloat {
return height / 35
}
class func sizeForType(height: CGFloat, type: Int) -> CGFloat {
switch type {
case STD:
return stdPtSize(height: height)
case HIGHLIGHT:
return hightlightPtSize(height: height)
case NOT_SO_HIGH:
return notSoHighlightPtSize(height: height)
default:
return 0
}
}
我有解決您問題的方法。 在我的目標C代碼下方。
float newFontSize = [UIScreen mainScreen].bounds.size.height * (fontSize / 568.0);
if ([UIScreen mainScreen].bounds.size.height < 500) {
newFontSize = [UIScreen mainScreen].bounds.size.height * (fontSize / 480.0);
}
self.label.font = [UIFont fontWithName:self.label.font.fontName size:newFontSize];
我希望這可以幫助你。
之前,我嘗試過使所有標簽的默認字體都大於使用的任何字體-在我的情況下為60。 然后,將adjustsFontSizeToFitWidth
屬性設置為true,以讓系統為我設置字體大小,同時設置UILabel
的size
。
要使標簽與屏幕尺寸成比例,可以使用情節提要的自動調整大小功能。 選擇UILabel
,如果不存在現有約束,則可以看到類似以下內容的內容:
在Xcode的右面板中,單擊線條以將其打開或關閉,側面的四條線將告訴您視圖是否保持其與superview
的距離,而廣場中的兩條線將告訴您是否調整其尺寸。 superview
您的情況而定,請確保如上圖所示啟用這些功能。 至於我沒有提到的其他四個,您可以嘗試與其他人一起切換開或關,以找到所需的確切行為。
如果兄弟姐妹或超級/子視圖需要約束,我建議您嘗試一組約束,例如:
這可能是稍微詳細,但主要是注意到前兩次拿到大小,設置的約束不恆定的乘數 。 接下來的兩個主要是為了滿足將標簽正確放置在視圖中的要求。 您可以自由對齊中心,也可以組合對齊頂部/底部/前導/尾隨以將其放置在所需的位置。
我的Kishan Godhani解決方案的Swift版本:
let screen = UIScreen.main
var newFontSize = screen.bounds.size.height * (defaultFont / 568.0);
if (screen.bounds.size.height < 500) {
newFontSize = screen.bounds.size.height * (defaultFont / 480.0);
}
label.font = label.font.withSize(newFontSize)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.