Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用Xcode脚本为不同的设备设置不同的字体大小?_Ios_Fonts_Font Size_Xcode Storyboard - Fatal编程技术网

Ios 如何使用Xcode脚本为不同的设备设置不同的字体大小?

Ios 如何使用Xcode脚本为不同的设备设置不同的字体大小?,ios,fonts,font-size,xcode-storyboard,Ios,Fonts,Font Size,Xcode Storyboard,我想使用Xcode脚本为iPhone 5、iPhone 6 Plus、iPhone 7 Plus和iPhone X设置不同的字体大小 有人能提供一些建议吗 在IB中无法实现这一点,您可以在运行时检测当前设备的大小,并相应地设置字体,前提是所有元素的字体都相同。请尝试设置全局字体 IPhone 6、7、X没有字体变化,必须是代码而不是IB使用标签属性的属性检查器为字体添加大小变化 以下是不同的可能变化,您可以使用大小类别进行设置: 试试这个: 以下是iPhone和iPad中字体大小变化的(

我想使用Xcode脚本为iPhone 5、iPhone 6 Plus、iPhone 7 Plus和iPhone X设置不同的字体大小

有人能提供一些建议吗


在IB中无法实现这一点,您可以在运行时检测当前设备的大小,并相应地设置字体,前提是所有元素的字体都相同。请尝试设置全局字体

IPhone 6、7、X没有字体变化,必须是代码而不是IB

使用标签属性的
属性检查器
为字体添加大小变化

以下是不同的可能变化,您可以使用大小类别进行设置:

试试这个:

以下是iPhone和iPad中字体大小变化的(结果)预览

更新 使用IB(故事板)可能无法达到预期的效果,但您可以使用以下编程解决方案进行尝试:

extension UIDevice {
    
    
    enum DeviceType: String {
        case iPhone4_4S = "iPhone 4 or iPhone 4S"
        case iPhones_5_5s_5c_SE = "iPhone 5, iPhone 5s, iPhone 5c or iPhone SE"
        case iPhones_6_6s_7_8 = "iPhone 6, iPhone 6S, iPhone 7 or iPhone 8"
        case iPhones_6Plus_6sPlus_7Plus_8Plus = "iPhone 6 Plus, iPhone 6S Plus, iPhone 7 Plus or iPhone 8 Plus"
        case iPhoneX = "iPhone X"
        case unknown = "iPadOrUnknown"
    }
    
    var deviceType: DeviceType {
        switch UIScreen.main.nativeBounds.height {
        case 960:
            return .iPhone4_4S
        case 1136:
            return .iPhones_5_5s_5c_SE
        case 1334:
            return .iPhones_6_6s_7_8
        case 1920, 2208:
            return .iPhones_6Plus_6sPlus_7Plus_8Plus
        case 2436:
            return .iPhoneX
        default:
            return .unknown
        }
    }
}


// Get device type (with help of above extension) and assign font size accordingly.
let label = UILabel()

let deviceType = UIDevice.current.deviceType

switch deviceType {
    
case .iPhone4_4S:
    label.font = UIFont.systemFont(ofSize: 10)
    
case .iPhones_5_5s_5c_SE:
    label.font = UIFont.systemFont(ofSize: 12)
    
case .iPhones_6_6s_7_8:
    label.font = UIFont.systemFont(ofSize: 14)
    
case .iPhones_6Plus_6sPlus_7Plus_8Plus:
    label.font = UIFont.systemFont(ofSize: 16)
    
case .iPhoneX:
    label.font = UIFont.systemFont(ofSize: 18)
    
default:
    print("iPad or Unkown device")
    label.font = UIFont.systemFont(ofSize: 20)

}

注意:这不是一个简单的答案。但是,这可以根据约束条件来实现


如果您使用的是autolayout,则可以通过故事板自动调整字体比例。在
UILabel
属性
检查器中,有一个
自动收缩
部分,您可以在其中设置
最小字体大小
最小字体比例
。因此,当您的标签通过约束调整自身大小时,它也会缩小您的字体以适合您。

您可以在应用程序中设置全局字体代理…看到这一点,它会帮助您:我还使用了一个勾号,即使用“自动收缩”,并选择最后一个“最小字体大小”使用值0.5,现在将您的最大字体大小指定给此标签,您就完成了;)查看下面的链接:-希望有帮助:)对于iPhone 6、7和X、、R和R,字体和布局不能有不同的变化ipad@Sh_Khan-欢迎您分享您的意见并提高此答案的质量。:)谢谢@KrunalNote,只有在故事板中启用了“使用特征变体”时,才能添加字体变体。花了好几个小时才发现…你如何设置约束?因为它对我不起作用