swift iPhone 6和iPhone 5s、4s的字体大小和UI视图大小相同

dfddblmv  于 2024-01-05  发布在  Swift
关注(0)|答案(3)|浏览(169)

文本大小和按钮在iPhone 7和iPhone 6上看起来不错,但在iPhone 5s或iPhone 5上运行时,它们的大小保持不变。
如果我给给予一个15点的左空间限制,它在iPhone 7上看起来真的很好,但在iPhone 5 S上,这给予了太多的空间。
如何为所有系列的设备实现动态视图和字体大小。
Thanks in advance

2ul0zpep

2ul0zpep1#

如果,比如说,UIFont.systemFont(ofSize: 16)在4.7英寸iPhone上看起来不错(屏幕宽度为375 pt),但在较小的设备上太大,你可以尝试根据屏幕宽度缩放字体。

let fontSize = UIScreen.main.bounds.width / 375  * 16
let font = UIFont.systemFont(ofSize: fontSize)

字符串
对于insets,根据@FlorensvonBuchwaldt,使用Auto Layout将UILabel约束到其超级视图的边距,然后将layoutMargins设置为缩放的inset.

let margin = UIScreen.main.bounds.width / 375  * 15
myView.layoutMargins = UIEdgeInsets(top: margin, left: margin, bottom: margin, right: margin)

jpfvwuh4

jpfvwuh42#

// create global width ratio constant and use it when your need  
let _widthRatio : CGFloat = {
    let ratio = _screenSize.width/375
    return ratio
}()

//use constant 
let font = UIFont.systemFont(ofSize: fontSize * _widthRatio)

// if you set font from storyboard then create subclass of your control 
class YMWidthLabel: UILabel {
    override func awakeFromNib() {
        super.awakeFromNib()
        font = font.withSize(font.pointSize * _widthRatio)
    }
}

// Now bind YMWidthLabel class in storyboard

字符串

kpbwa7wx

kpbwa7wx3#

为此,你可以使用AutoLayout。简单地将你的视图限制在你的超级视图的边缘。

yourView -> superView.Leading.Margin
yourView -> superView.Trailing.Margin

字符串
使用视图控制器的边距,可以确保它在所有设备上都能正常工作。
对于字体大小- Apple为您提供了一种名为“preferredFontStyles”的东西,您可以在几乎所有情况下使用。因此,如果您希望按钮在所有设备上都具有正常的文本大小,只需执行以下操作:

yourLabel.font = UIFont.preferredBody


UIFont.preferredTitle


等等等等。
希望这能帮助你掌握窍门

相关问题