iPhone 7和iPhone 6上的文字大小和按钮看起来不错,但在iPhone 5s或iPhone 5上运行时,它们的大小保持不变。
如果我给左边空间约束15点,它在iPhone 7上看起来非常好,但在iPhone 5s上,这给了太多空间。
如何为所有设备系列实现动态视图和FontSize。
提前致谢
答案 0 :(得分:0)
为此你可以使用AutoLayout。只需将您的视图限制在超级视图的边缘即可。即
yourView -> superView.Leading.Margin
yourView -> superView.Trailing.Margin
使用视图控制器的边距,可以确保它在所有设备上都能正常工作。
对于字体大小 - Apple为您提供了一种名为'prefferedFontStyles'的功能,您可以在几乎所有情况下使用它。因此,如果您希望您的按钮在所有设备上都具有正常的文本大小,只需执行以下操作:
yourLabel.font = UIFont.preferredBody
或
UIFont.preferredTitle
等等。
希望有助于掌握它
答案 1 :(得分:0)
如果说,UIFont.systemFont(ofSize: 16)
在4.7" iPhone(屏幕宽度为375pt),但在较小的设备上太大,您可以尝试根据屏幕宽度缩放字体...
let fontSize = UIScreen.main.bounds.width / 375 * 16
let font = UIFont.systemFont(ofSize: fontSize)
对于插图,根据@FlorensvonBuchwaldt,使用自动布局将UILabel
约束到其超级视图的边距,然后将layoutMargins
设置为缩放插图...
let margin = UIScreen.main.bounds.width / 375 * 15
myView.layoutMargins = UIEdgeInsets(top: margin, left: margin, bottom: margin, right: margin)
答案 2 :(得分:0)
// 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