【问题标题】:UIButton label text autoshrink with insets带有插图的 UIButton 标签文本自动收缩
【发布时间】:2015-02-15 01:50:15
【问题描述】:

我正在使用自动布局。我有一个具有固定高度和宽度的 UIButton 和一个背景图像(圆角正方形)。它显示可变长度的文本字符串(假设在 1 到 30 个单词之间)。

我想让文本根据字符串长度自动收缩,并在我的按钮中最多包含 3 行文本。所以我这样做了:

 [button.titleLabel setMinimumScaleFactor:0.01];
    [button.titleLabel setAdjustsFontSizeToFitWidth: YES];
    [button.titleLabel setNumberOfLines:3];
    [button.titleLabel setTextAlignment:NSTextAlignmentCenter];

我还在 Interface Builder 中将字体大小设置为较高的值,例如 50。我将换行符设置为“剪辑”。

按钮的文本正确地适应字符数,但往往超出按钮的框架。它适用于中等长度的字符串,但不适用于大字符串,我不知道为什么。我试图在我的按钮上添加插图,但它并没有做太多,只会移动过大的文本,所以我假设字体调整是在嵌入插图之前计算的。

下面是截图。其中有 4 个按钮,包含在较大的蓝色视图中。红色背景是按钮的背景,黄色是用作背景的图像。

I uploaded an example project on Google Drive. Use iPhone 6 Plus for simulation.

【问题讨论】:

    标签: ios objective-c fonts uibutton resize


    【解决方案1】:

    您还应该设置按钮的titleEdgeInsets 属性。

    例如:

    button.titleEdgeInsets = UIEdgeInsetsMake(2.0, 2.0, 2.0, 2.0);
    

    在您的项目中,似乎有一些布局约束与按钮的标题标签相混淆。

    添加以下约束时,它可以工作。

    UILabel *titleLabel = button.titleLabel;
    NSDictionary *views = NSDictionaryOfVariableBindings(titleLabel);
    [button addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[titleLabel]|"
                                                                   options:kNilOptions
                                                                   metrics:nil
                                                                     views:views]];
    

    在使用此解决方案之前,我建议您首先尝试以更简单的方式设置布局约束。

    【讨论】:

    • 我已经做到了。上面的例子有标题插图,使用 Storyboard 设置。
    • 我做了一个示例项目,设置边缘插图可以解决这个问题。你能做一个只有那部分的项目来分享,以便我和其他人可以直接尝试吗?
    • 我在原始问题中上传了一个示例项目。谢谢。
    • 通过您的编辑: - 文本适合按钮并且不会超出按钮的边缘,这很棒 - 插图不做任何事情。我尝试删除项目中的标题插入和/或内容插入,但没有任何反应我仍然希望有一个“填充”或“边距”或类似的东西,以避免我的文本粘在按钮上。另外,如果您能解释一下您的约束的作用,我将不胜感激,我是约束的新手,我只是不明白那个!如果你有简化我的约束的想法,那也很酷。非常感谢您迄今为止的所有帮助。
    • 模仿您对约束所做的操作,我在标题标签和按钮之间添加了前导空格约束,以及水平居中约束。现在它似乎工作了!我将用我的实际项目进一步测试并回复你。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 2017-11-09
    • 2012-07-08
    • 1970-01-01
    相关资源
    最近更新 更多