解决方法
使用
Size-Class并从Label属性的Attribute Inspector添加字体的大小变化.
以下是不同的可能变体,您可以使用Size类进行设置:
试试这个:
这是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) }