繁体   English   中英

逐步更改iPad Pro的字体大小

[英]Change font size for iPad Pro in steps

我有一个应用程序,仅适用于横向模式的iPad。 屏幕设计完全在IB中通过自动布局完成。

现在,我要实现以下行为:在iPad Pro 12“上时,所有标签的字体大小应为48,对于所有较小的iPad字体,字体大小应为32。

我尝试了自动缩水和最小字体大小的IB中的各种选项,但随后该应用选择的字体大小在48-32之间,并具有随机外观。 但是我只想为12“或32的所有较小设备设置48个-两者之间为了保持一致的外观而没有设置。

我的下一个想法是将IB中所有标签的固定字体大小设置为32,并为所有标签提供标签,并在“ viewDidLoad”上的每个viewcontroller中运行以下代码:

UIDevice的扩展

public var isPadPro12: Bool {
    if (UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.pad
        && UIScreen.main.nativeBounds.size.height == 2732) {
        return true
    }
    return false
}

在“ viewDidLoad”中调用的代码

func adjustFont() {
    let isPro12 = UIDevice.current.isPadPro12
    if isPro12 {
        for subview in view.subviews {
            if subview.tag == 999 {
                if let labelView = subview as? UILabel {
                    labelView.font = labelView.font.withSize(48)
                    print ("font size \(labelView.font)")
                }
            }
        }
    }
}

它仅适用于某些标签,另一些标签仍在32中。我该怎么做才能将标签强制为48? 自动排版有问题吗? 标签仅具有宽度约束和上边距以及X / Y位置。

编辑在调整字体大小后添加调试打印时,得到以下结果:

font size Optional(<UICTFont: 0x7fcbf7c2ea90> font-family: "Arial"; font-weight: normal; font-style: normal; font-size: 48.00pt)

但是字体大小绝对不是48。它看起来与将IB中的字体大小直接设置为48不同。

  1. 子类UILabel,为Interface Builder中的每个uilabel设置该类。

  2. 为要支持的所有不同类型/字体创建一个枚举,并在该枚举中创建一个函数,该函数返回例如字体大小

  3. 确定当前设备并将其存储在枚举中的值中

  4. 在步骤1中重写子类UILabel的初始化程序,并从步骤3中定义的variabele中获取字体大小,并在步骤2中使用vales

码:

var currentScreen = Screens.iPadLarge //change this to current device


enum Screens{
    case iPadLarge, iPadSmall
    func getFont() -> CGFloat{
        switch self{
        case .iPadLarge:
            return 40
        case .iPadSmall:
            return 20
        }
    }
}

class MyLabel: UILabel{

    init(frame: CGRect){
        super.init(frame: frame)
        commonLoad()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        commonLoad()
    }

    func commonLoad(){
        let fontSize = currentScreen.getFont()
        //use fontSize
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM