iOS app全域性字型設定

2021-09-07 13:53:20 字數 2534 閱讀 6749

方法一:

寫乙個uilabel(fontextension)擴充套件

重寫initwithframe(手寫**必走方法)和awakefromnib(xib必走方法)

當然uibutton、uitextview等控制項都可以用這種方式

#import

@inte***ce uilabel (fontextension)

@end

#import "uilabel+fontextension.h"

#define kglobalfontfamilyname @"snell roundhand"       // 全域性字型名稱

@implementation uilabel (fontextension)

- (instancetype)initwithframe:(cgrect)frame

return self;

}- (void)awakefromnib

- (void)setglobalfont

@end

方法二:

寫乙個基類(比如fontviewcontroller)繼承uiviewcontroller

重寫viewwilllayourtsubviews

- (void)viewwilllayoutsubviews

// 遍歷self.view 中所有的uilabel設定其字型

- (void)setfontfamily:(nsstring*)fontfamily forview:(uiview*)view andsubviews:(bool)issubviews

if (issubviews)}}

方法三:

1、使用框架

建立我們自己的baselabel類,在其中進行預設字型的設定,並且並不影響在使用過程中特殊設定字型的label,這種方式可以滿足我們的需求,但是並不適於我們的場景,專案已經成熟,重建乙個label基類,來讓所有的uilabel都換成它的工作量不會比重新設定所有label字型的工作量小太多。但這也是有優勢的,至少如果下次再換字型,我們就不用麻煩了。

2、使用runtime替換uilabel初始化方法

這是最簡單方便的方法,我們可以使用runtime機制替換掉uilabel的初始化方法,在其中對label的字型進行預設設定。因為label可以從initwithframe、init和nib檔案三個**初始化,所以我們需要將這三個初始化的方法都替換掉。

首先,我們建立乙個uilabel的類別:

#import

@inte***ce uilabel (yhbasechangedefaultfont)

@end

在其中加入如下**:

#import "uilabel+yhbasechangedefaultfont.h"

#import

@implementation uilabel (yhbasechangedefaultfont)

/***每個nsobject的子類都會呼叫下面這個方法 在這裡將init方法進行替換,使用我們的新字型

*如果在程式中又特殊設定了字型 則特殊設定的字型不會受影響 但是不要在label的init方法中設定字型

*從init和initwithframe和nib檔案的載入方法 都支援更換預設字型

*/+(void)load else

if (didaddmethod2) else

if (didaddmethod3) else

});}

/***在這些方法中將你的字型名字換進去

*/- (instancetype)yhbaseinit

return __self;

}-(instancetype)yhbaseinitwithframe:(cgrect)rect

return __self;

}-(void)yhbaseawakefromnib

}@end

在上面的方法中寫入我們想要uilabel預設顯示的字型,我們分別從init,initwithframe和nib檔案建立乙個uilabel新增到檢視上,不做任何其他的操作:

uilabel * label = [[uilabel alloc]initwithframe:cgrectmake(20, 100, 280, 30)];

label.text = @"你是從initwithframe來的label";

uilabel * label2 = [[uilabel alloc]init];

label2.frame= cgrectmake(20, 200, 280, 30);

label2.text = @"你是從init來的label";

執行效果如下,可以看出,字型全部換掉了:

Android app全域性字型設定

方法很簡單,就是使用github上的乙個開源庫calligraphy,使用步驟只需要以下幾步 calligraphyconfig.initdefault new calligraphyconfig.builder setdefaultfontpath fonts roboto bold.ttf se...

如何設定全域性字型

有時候為了統一介面中所有的 label,button uitextfield 等的字型,我們在初始化的時候就需要不斷地新增冗餘的 來設定自己的字型。uilabel label uilabel alloc init label.font uifont fontwithname myfont 如果你的介...

iOS app跳轉系統設定頁面進行設定

定位服務設定介面 nsurl url nsurl urlwithstring prefs root location services 這樣就可以跳到系統設定的定位服務介面啦!我們繼續看幾個列子。facetime設定介面 nsurl url nsurl urlwithstring prefs roo...