傳統font大小適配可能會根據屏幕寬度與iphone5或iphone6寬度的一個比例來適配。但如果有這樣一個需求,在顯示@2x圖片的手機上顯示一種字體,在顯示@3x圖片的手機上顯示另一個固定大小的字體。 所以這裡的重點是要區分手機屏幕顯示圖片是@2x型還是@3x型的。 CGFloat scale = ...
傳統font大小適配可能會根據屏幕寬度與iphone5或iphone6寬度的一個比例來適配。但如果有這樣一個需求,在顯示@2x圖片的手機上顯示一種字體,在顯示@3x圖片的手機上顯示另一個固定大小的字體。
所以這裡的重點是要區分手機屏幕顯示圖片是@2x型還是@3x型的。
CGFloat scale = [UIScreen mainScreen].scale,就它了。UIScreen的scale屬性在iphone 5,6,6s,7,8列印都是2,在plus,iPhone X列印都是3。所以就有下麵的巨集定義
/* 字體相關 */
#define kScreenScale [UIScreen mainScreen].scale // iphone 3gs為1;4,5,5s,6,7,8等為2;plus X為3
// @3x屏幕字體為@2x字體的1.5倍大
#define kFontAuto(size) [UIFont systemFontOfSize:(size * kScreenScale / 2.0)]