iOS字型大小適配的幾種方法

2021-08-07 17:51:52 字數 1689 閱讀 5466

方法一:用巨集定義適配字型大小(根據螢幕尺寸判斷)

//巨集定義

#define screen_width ([uiscreen mainscreen].bounds.size.width)

#define font_size(size) ([uifont systemfontofsize:fontsize(size))

/** * 字型適配 我在pch檔案定義了乙個方法

*/static inline cgfloat fontsize(cgfloat fontsize)else if (screen_width==375)else

}

方法二:用巨集定義適配字型大小(根據螢幕尺寸判斷)
1.5代表6p尺寸的時候字型為1.5倍,5s和6尺寸時大小一樣,也可根據需求自定義比例。

**如下:

#define isiphone6p          screen_width==414

#define sizescale (isiphone6p ? 1.5 : 1)

#define kfontsize(value) value*sizescale

#define kfont(value) [uifont systemfontofsize:value*sizescale]

class_getinstancemethod得到類的例項方法

class_getclassmethod得到類的類方法

1. 首先需要建立乙個uifont的分類

2. 自己ui設計原型圖的手機尺寸寬度

#define myuiscreen 375 // ui設計原型圖的手機尺寸寬度(6), 6p的--414

uifont+runtime.m

#import "uifont+runtime.h"

#import @implementation uifont (runtime)

+ (void)load

+ (uifont *)adjustfont:(cgfloat)fontsize

@end

外部正常呼叫系統設定字型方法就行
controller類中正常呼叫就行了:

uilabel *label = [[uilabel alloc]initwithframe:cgrectmake(0, 150, [uiscreen mainscreen].bounds.size.width, 60)];

label.text = @"ios字型大小適配";

label.font = [uifont systemfontofsize:16];

[self.view addsubview:label];

load方法只會走一次,利用runtime的method進行方法的替換

替換的方法裡面(把系統的方法替換成我們自己寫的方法),這裡要記住寫自己的方法,不然會死迴圈

之後凡是用到systemfontofsize方法的地方,都會被替換成我們自己的方法,即可改字型大小了

注意:此方法只能替換 純** 寫的控制項字型大小,如果你用xib建立的控制項且在xib裡面設定的字型大小,那麼替換不了!你需要在xib的

awakefromnib方法裡面手動設定下控制項字型

iOS 字型大小適配

ios 字型大小適配 1 用巨集定義適配字型大小 根據螢幕尺寸判斷 1 方法 巨集定義 define screen width uiscreen mainscreen bounds.size.width define font size size uifont systemfontofsize fo...

iOS不同螢幕適配字型大小

直接上demo define ios version 10 or later uidevice currentdevice systemversion floatvalue 10.0 yes no define adapationlabelfont n ios version 10 or later...

ExtJs預設的字型大小改變的幾種方法

1 只需把ext all.css樣式檔案中的所有11px換成12px,這樣就為統一的12px的字型了。但是如果再想增大,那麼這時候不光是把原始檔的11px換成15px,而且需要把裡面和font有關的12px換成15px。改完之後按鈕出現毛邊,在樣式檔案中加 複製 如下 ext ie x btn te...