有没有办法在大型设备中将UILabel字体设置为更大,在小型设备中设置更小?
我是否需要以编程方式执行此操作,每次检查设备大小?
我的方法就是这样,现在:
class func hightlightPtSize(height: CGFloat) -> CGFloat {
return height / 25
}
class func notSoHighlightPtSize(height: CGFloat) -> CGFloat {
return height / 30
}
class func stdPtSize(height: CGFloat) -> CGFloat {
return height / 35
}
class func sizeForType(height: CGFloat, type: Int) -> CGFloat {
switch type {
case STD:
return stdPtSize(height: height)
case HIGHLIGHT:
return hightlightPtSize(height: height)
case NOT_SO_HIGH:
return notSoHighlightPtSize(height: height)
default:
return 0
}
}
答案 0 :(得分:4)
我有你的问题的解决方案。在我的目标C中的代码下面。
float newFontSize = [UIScreen mainScreen].bounds.size.height * (fontSize / 568.0);
if ([UIScreen mainScreen].bounds.size.height < 500) {
newFontSize = [UIScreen mainScreen].bounds.size.height * (fontSize / 480.0);
}
self.label.font = [UIFont fontWithName:self.label.font.fontName size:newFontSize];
我希望这会对你有所帮助。
答案 1 :(得分:1)
之前我尝试过为所有标签制作我的默认字体,大于任何可能使用的标签 - 在我的情况下为60。然后将adjustsFontSizeToFitWidth
属性设置为true,让系统为我设置字体大小,同时设置size
的{{1}}。
要制作与屏幕尺寸成比例的标签,您可以使用故事板的自动调整功能。选择UILabel
后,如果没有现有约束,您可以看到如下内容:
在Xcode的右侧面板中,单击线条以打开或关闭它,两侧的四条线将指示视图是否保持距离它的两侧UILabel
两侧的距离在你的情况下,它会告诉你是否使用它superview
进行调整,确保它们在上图中打开。至于我没有使用的其他四个,你可以尝试尝试与其他人一起打开或关闭每个打开或关闭,以找到你想要的确切行为。
如果它的兄弟姐妹或超级/子视图需要约束,我可以建议你尝试一组约束,如:
可能略显冗长,但主要注意前两个要获得大小调整,设置约束的乘数而不是常量。接下来的两个主要是为了满足将标签正确放置在视图中的要求。您可以自由对齐中心或对齐顶部/底部/前导/尾部以将其定位在您想要的位置。
答案 2 :(得分:1)
我的Swift版本的kishan godhani的解决方案:
let screen = UIScreen.main
var newFontSize = screen.bounds.size.height * (defaultFont / 568.0);
if (screen.bounds.size.height < 500) {
newFontSize = screen.bounds.size.height * (defaultFont / 480.0);
}
label.font = label.font.withSize(newFontSize)