调整设备尺寸的UILabel字体大小

时间:2017-01-03 08:06:13

标签: ios objective-c swift xcode uilabel

有没有办法在大型设备中将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
    }
}

3 个答案:

答案 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后,如果没有现有约束,您可以看到如下内容:

enter image description here

在Xcode的右侧面板中,单击线条以打开或关闭它,两侧的四条线将指示视图是否保持距离它的两侧UILabel两侧的距离在你的情况下,它会告诉你是否使用它superview进行调整,确保它们在上图中打开。至于我没有使用的其他四个,你可以尝试尝试与其他人一起打开或关闭每个打开或关闭,以找到你想要的确切行为。

如果它的兄弟姐妹或超级/子视图需要约束,我可以建议你尝试一组约束,如:

  • 标签(宽度)等于SuperView(宽度) - 更改乘数以设置您想要占用多少空间
  • 标签(高度)等于SuperView(高度) - 与宽度相同
  • 标签(前导)等于SuperView(前导) - 改变常数以设置距前缘的距离,如果需要可以更改为后缘
  • 标签(顶部)等于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)
相关问题