对于5S,我们使用12pt的字体大小,但这在6 Plus上很小且无法读取。所以我们需要在6 Plus上将字体大小提高到15pt,但随后我们的填充和边距都搞砸了,因为我们在自动布局约束中使用了一些硬编码偏移。
我尝试删除6和6 plus发射图像以强制“缩放”,但这并不理想。我们确实希望我们的一些内容更小,以利用更高的分辨率。
我只是想知道其他iOS开发人员在做什么?你设置动态字体大小和填充?
我刚刚在Swift中编写了这个小帮助文件,但不确定它是否是最好的处理方式:
let DEVICE_WIDTH_5S: CGFloat = 320.0 // 320x568
let DEVICE_WIDTH_6: CGFloat = 375.0 // 375x667
let DEVICE_WIDTH_6PLUS: CGFloat = 414.0 // 414x736
let screenSize: CGRect = UIScreen.mainScreen().bounds
// Helper functions for fonts
func ProximaNova(style: String, size: CGFloat) -> UIFont {
return dynamicFont("ProximaNova", style, size)
}
func BrandonGrotesque(style: String, size: CGFloat) -> UIFont {
return dynamicFont("BrandonGrotesque", style, size)
}
private func dynamicFont(name: String, style: String, size: CGFloat) -> UIFont {
var dynamicSize = size
// Increase our font size for iPhone 6, 6+ and above
if screenSize.width >= DEVICE_WIDTH_6PLUS {
dynamicSize += 3.0
} else if screenSize.width >= DEVICE_WIDTH_6 {
dynamicSize += 2.0
}
return UIFont(name: "\(name)-\(style)", size: dynamicSize)!
}
答案 0 :(得分:0)
我的一个项目中遇到了同样的问题。我们需要字体与设备完全相同的比例。所以这就是我为我的项目所做的。
#define IPHONE6PLUS_HEIGHT 736
#define AVENIR_LTPRO @"AvenirLTPro-Medium"
#define kFONTSize(sizeF) (([UIScreen mainScreen].bounds.size.height / IPHONE6PLUS_HEIGHT) * sizeF)
#define kFONT_AVNR_LTPRO(sizeF) [UIFont fontWithName:AVENIR_LTPRO size:kFONTSize(sizeF)]
使用它时,我已经提供了iPhone 6+字体大小。它节省了大量的编码和计算。这里,代码:
txtView.font = kFONT_AVNR_LTPRO(17.57f);
它还将管理所有屏幕尺寸和未来设备的字体大小。 希望它可以帮助你.. :)