ios – 如何使用Xcode Storyboard为不同设备设置不同的字体大小?

我想使用 Xcode Storyboard为iPhone 5,iPhone 6 Plus,iPhone 7 Plus和iPhone X设置不同的字体大小.

有人可以提供任何建议吗?

解决方法

使用 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)

}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...