首页 > 解决方案 > Roboto 字体不适用于 iOS 13 中的 iPhone XR

问题描述

我是 swift 新手,我正在尝试使用 Roboto 字体。Roboto 字体适用于 iPhone 6s,但不适用于 iPhone XR。我的代码是这样的

    #ifndef DICE_PrefixHeader_pch
    #define DICE_PrefixHeader_pch  

    #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    #define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
    #define IS_IPHONE_4 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 480.0)
    #define IS_IPHONE_5 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 568.0)
    #define IS_IPHONE_6 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 667.0)
    #define IS_IPHONE_6PLUS (IS_IPHONE && [[UIScreen mainScreen] nativeScale] == 3.0f)
    #define IS_IPHONE_6_PLUS (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 736.0)
    #define IS_IPHONE_X (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 812.0)
    #define IS_IPHONE_XR (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 1792.0)

    GenralMethod.h

    +(UIFont*)setFont:(NSString*)fontName ForiPhone6Plus:(CGFloat)iPhone6Plus iPhone6:(CGFloat)iPhone6 iPhoneXR:(CGFloat)iPhoneXR andiPhone:(CGFloat)iPhone;

    GenralMethod.m

    +(UIFont*)setFont:(NSString*)fontName ForiPhone6Plus:(CGFloat)iPhone6Plus iPhone6:(CGFloat)iPhone6 iPhoneXR:(CGFloat)iPhoneXR andiPhone:(CGFloat)iPhone
    {
        return [UIFont fontWithName:fontName size:IS_IPHONE_6_PLUS?iPhone6Plus:IS_IPHONE_XR?iPhoneXR:IS_IPHONE_5?iPhone:iPhone6];
    }


    [btnMessage.titleLabel setFont:[GeneralMethod setFont:@"Roboto-Light" ForiPhone6Plus:20.0 iPhone6:20.0 iPhoneXR:20.0 andiPhone:15.0]];

在此处输入图像描述

我也在情节提要中添加了它,但它在 iPhone XR 中不起作用。

标签: iosswiftfonts

解决方案


按点而不是像素定义设备屏幕尺寸。

这条线永远不会被使用。

#define IS_IPHONE_XR (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 1792.0)

iPhone XR 的屏幕尺寸为 414×896 点(828×1792 像素)。

有关所有 iPhone 屏幕尺寸的完整列表,请查看此链接: https ://developer.apple.com/library/archive/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/Displays/Displays.html


推荐阅读