簡體   English   中英

調整UILabel字體大小以適應設備尺寸

[英]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,以讓系統為我設置字體大小,同時設置UILabelsize

要使標簽與屏幕尺寸成比例,可以使用情節提要的自動調整大小功能。 選擇UILabel ,如果不存在現有約束,則可以看到類似以下內容的內容:

在此處輸入圖片說明

在Xcode的右面板中,單擊線條以將其打開或關閉,側面的四條線將告訴您視圖是否保持其與superview的距離,而廣場中的兩條線將告訴您是否調整其尺寸。 superview您的情況而定,請確保如上圖所示啟用這些功能。 至於我沒有提到的其他四個,您可以嘗試與其他人一起切換開或關,以找到所需的確切行為。

如果兄弟姐妹或超級/子視圖需要約束,我建議您嘗試一組約束,例如:

  • 標簽(寬度)等於SuperView(寬度)-更改乘數以設置要占用的空間
  • 標簽(高度)等於SuperView(高度)-與寬度相同
  • 標簽(前導)等於SuperView(前導)-更改常量以設置到前緣的距離,可以根據需要更改為后緣
  • Label(Top)等於SuperView(Top),與前導相同,如果需要,可以更改為底部。

這可能是稍微詳細,但主要是注意到前兩次拿到大小,設置的約束不恆定乘數 接下來的兩個主要是為了滿足將標簽正確放置在視圖中的要求。 您可以自由對齊中心,也可以組合對齊頂部/底部/前導/尾隨以將其放置在所需的位置。

我的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.

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