iOS Different Font Sizes within Single Size Class for Different Devices

前端 未结 7 1564
死守一世寂寞
死守一世寂寞 2020-12-01 05:32

In iOS 8, we can design a different UI layout for each size class. The issue I\'m facing is, I\'ve designed a layout for Compact Width and Regular Height (size class for all

7条回答
  •  Happy的楠姐
    2020-12-01 06:24

    You can achieve desired effect as below.

    Usage : instead of using 14 as font size you can use 14.fontSize, it will changed as per device, depends on you delta value.

    No need to add conditions everyWhere in code. Only one time as below.

    Usage: UIFont.font_medium(12.fontSize)

    UIFont extension:

    extension UIFont {    
        class func font_medium(_ size : CGFloat) -> UIFont {
            return UIFont(name: "EncodeSans-Medium", size: size)!;
        }    
    }
    

    UIDevice Extension:

    extension UIDevice {
        enum DeviceTypes {
            case iPhone4_4s
            case iPhone5_5s
            case iPhone6_6s
            case iPhone6p_6ps
            case after_iPhone6p_6ps
        }
    
        static var deviceType : DeviceTypes {
            switch UIScreen.main.height {
            case 480.0:
                return .iPhone4_4s
            case 568.0:
                return .iPhone5_5s
            case 667.0:
                return .iPhone6_6s
            case 736.0:
                return .iPhone6p_6ps
            default:
                return .after_iPhone6p_6ps
            }
        }
    }
    

    Int Extension:

    extension Int{
    
        var fontSize : CGFloat {
    
            var deltaSize : CGFloat = 0;
            switch (UIDevice.deviceType) {
            case .iPhone4_4s,
                 .iPhone5_5s :
                deltaSize = -1;
            case .iPhone6_6s :
                deltaSize = 2;
            case .iPhone6p_6ps :
                deltaSize = 2;
            default:
                deltaSize = 0;
            }
    
            let selfValue = self;
            return CGFloat(selfValue) + deltaSize;
        }
    }
    

提交回复
热议问题