簡體   English   中英

使用自動布局更改UILabel的字體

[英]Change font of UILabel with autolayout

通常,您使用:

label.adjustsFontSizeToFitWidth = YES;

使標簽在不再可能增加其框架大小時減小其字體大小。

有沒有辦法讓它嘗試其他字體,例如在減小字體大小之前,該字體家族的精簡版本?

有幾種很好的方法可以解決此問題。 在IB中,選擇您的標簽:

方法1:

在此處輸入圖片說明

如果單擊加號按鈕,則可以為給定的尺寸類別添加特定的字體。

在代碼中:

- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection
{
    if(self.view.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassRegular && self.view.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassRegular)
    {
        //iPad here
        myLbl.Font = [UIFont fontWithName:@"Heyo" size:10];
    }
}

我認為更好的方法是方法2:

在此處輸入圖片說明

使用這種方法,您可以告訴字體縮小到一定大小,或者標識比例因子。 玩弄這些值,直到獲得所需的結果。 我還將在本教程中討論這個主題。

在代碼中:

//Minimum font size
[myLbl setMinimumScaleFactor:MIN_FONT_SIZE/[UIFont labelFontSize]];

//Scale factor
[myLbl setMinimumScaleFactor:0.4];

這對我不起作用,但確實如此。 您還需要在IB中使用系統字體

#import <UIKit/UIKit.h>

@interface UILabelEx : UILabel


@end

#import "UILabelEx.h"
#import "Constants.h"

@implementation UILabelEx

- (void) traitCollectionDidChange: (UITraitCollection *) previousTraitCollection {
    [super traitCollectionDidChange: previousTraitCollection];

    self.font = [UIFont fontWithName:APP_FONT size:self.font.pointSize];   
}
@end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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