首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UILabel不会自动收缩

UILabel不会自动收缩
EN

Stack Overflow用户
提问于 2014-08-08 02:08:13
回答 3查看 2.3K关注 0票数 8

我正在尝试创建一个根据父视图的高度缩放特定UILabel的视图。在故事板中,我将“自动收缩”选项设置为“最小字体大小”的值为8,行数设置为1。但是,我注意到,如果将行数设置为1,字体大小不会调整到适合的大小。如果我将行数设置为0,则会发生自动收缩,但字体大小小于我为4.0“显示器指定的147大小。

(上):在3.5英寸显示屏上,左:行数= 1,右:行数=0

(底部):在4.0英寸显示屏上,左:行数= 1,右:行数=0

理想情况下,我希望4.0英寸的屏幕字体大小为147,并使其能够缩小到3.5英寸的显示屏上。

EN

回答 3

Stack Overflow用户

发布于 2014-08-08 02:41:52

我的理解是,如果您将numberOfLines设置为1,标签将根据宽度自动收缩,而不是高度。这应该可以解释左上角的图像。

至于右下角的图像,我会尝试增加标签的高度。它将根据文本的固有内容大小自动缩小,因此看起来147的字体大小当前的内容高度比您在较高屏幕中的标签高度要高。

票数 5
EN

Stack Overflow用户

发布于 2016-09-21 05:08:06

自动收缩似乎只适用于宽度小于所需宽度的情况,而不适用于高度不足的情况。

我用一个定制的子类解决了这个问题:

代码语言:javascript
运行
复制
class HeightAutoShrinkingLabel: UILabel {
    override func layoutSubviews() {
        super.layoutSubviews()
        while self.font.pointSize > 1 {
            if self.intrinsicContentSize.height <= self.frame.height {
                // Fits
                break
            }
            self.font = self.font.withSize(font.pointSize - 1)
        }
    }
}
票数 4
EN

Stack Overflow用户

发布于 2016-02-26 01:33:19

垂直和水平自动收缩的解决方案非常简单:

代码语言:javascript
运行
复制
label.font = [UIFont fontWithName:gMainFont size:label.height];
label.minimumScaleFactor = 0.1;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25189238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档