Ios 如何使用Xcode脚本为不同的设备设置不同的字体大小?
我想使用Xcode脚本为iPhone 5、iPhone 6 Plus、iPhone 7 Plus和iPhone X设置不同的字体大小 有人能提供一些建议吗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中字体大小变化的(
在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,只有在故事板中启用了“使用特征变体”时,才能添加字体变体。花了好几个小时才发现…你如何设置约束?因为它对我不起作用