【问题标题】:how do i let text fit to UIButton?如何让文本适合 UIButton?
【发布时间】:2012-11-19 22:13:26
【问题描述】:

问题:

按钮大小足够了,但是当我更改标题时,标题文本无法适应按钮宽度。任何SDK功能都可以解决这个问题,还是我需要手动编码才能解决?

请参考以下图片。

在 nib 文件中设计。

模拟器中的初始显示

当我更改标题文本时

之前尝试过一些方法

  1. _button.titleLabel.adjustsFontSizeToFitWidth = YES;
    这种方式会改变我的字体大小。我不能接受这种方式。

  2. [_button setTitleEdgeInsets:UIEdgeInsetsMake(10.0, 10.0, 0.0,0.0)];
    方式只改变标签的位置,不改变标签大小。

  3. [_button.titleLabel sizeToFit];
    结果与图片(3)相同。

  4. [_button sizeToFit];
    标题移到左上角,标题还是一样的结果。

迷惑了,我的按钮大小够大,标题怎么这么小?

【问题讨论】:

    标签: ios uibutton uilabel


    【解决方案1】:

    使用这个。

    目标-c

    button.titleLabel.numberOfLines = 1;
    button.titleLabel.adjustsFontSizeToFitWidth = YES;
    button.titleLabel.lineBreakMode = NSLineBreakByClipping; 
    

    斯威夫特 2.0

    button.titleLabel?.numberOfLines = 0
    button.titleLabel?.adjustsFontSizeToFitWidth = true
    button.titleLabel?.lineBreakMode = NSLineBreakMode.ByWordWrapping
    

    注意:Swift 代码礼貌:@Rachel Harvey

    斯威夫特 5.0

    button.titleLabel?.numberOfLines = 0
    button.titleLabel?.adjustsFontSizeToFitWidth = true
    button.titleLabel?.lineBreakMode = .byWordWrapping
    

    【讨论】:

    • button.titleLabel.adjustsFontSizeToFitWidth = YES; 仅此一行就可以解决问题
    • 我最近为 Swift 2 编辑了这个并让文字换行:button.titleLabel!.numberOfLines = 0 button.titleLabel!.adjustsFontSizeToFitWidth = true button.titleLabel!.lineBreakMode = NSLineBreakMode.ByWordWrapping
    • Swift 代码中,.numberOfLines 应该是1 而不是0
    • Note 如果使用属性文本,请尝试NSLineBreakMode.ByTruncatingTail
    • 我必须添加:self.shareButton.titleLabel.baselineAdjustment = UIBaselineAdjustmentNone; 以防止文本下拉(iOS 10)
    【解决方案2】:

    这里是 Swift 版本:

        let button = UIButton()
        button.titleLabel?.numberOfLines = 1
        button.titleLabel?.adjustsFontSizeToFitWidth = true
        button.titleLabel?.lineBreakMode = NSLineBreakMode.ByClipping
    

    【讨论】:

      【解决方案3】:

      还要确保标签不会调整以后的间距,因为这似乎优先于调整字体大小。还要确保 minimumScaleFactor

      button.titleLabel.adjustsFontSizeToFitWidth = YES;
      button.titleLabel.adjustsLetterSpacingToFitWidth = NO;
      button.titleLabel.minimumScaleFactor = 0.5;
      

      【讨论】:

        【解决方案4】:

        对于遇到这个问题的人:

        尝试使用设置器:

         [self.myButton setTitle:@"Title" forState:UIControlStateNormal];
         [self.myButton sizeToFit];
        

        【讨论】:

          【解决方案5】:

          在 IB 中,只需选择按钮,进入编辑器菜单,然后选择“Size To Fit Content”

          【讨论】:

          • 嗨,我试过了,但没有解决我的问题。我有更新(3)(4)。谢谢
          • 顺便说一句,IB“适合大小”的设置在哪里,我在 IB 中找不到。我只是在 XCode4.5 中找到“适合的比例”
          • 它应该是“适合内容的大小”,我已经更新了我的答案。这就是我所说的——在编辑器菜单下。在 IB 中这样做与在代码中使用 sizeToFit 不同。
          • 我明白了。编辑器>“适合内容的大小”,我删除了提到的代码(3)和(4),然后再试一次。结果还是一样。见图3。谢谢
          • 我不知道该说什么——它对我有用。它可能与布局约束有关。
          猜你喜欢
          • 1970-01-01
          • 2017-07-31
          • 1970-01-01
          • 2010-10-18
          • 1970-01-01
          • 2014-02-10
          • 2019-09-22
          • 2012-02-17
          • 2018-01-21
          相关资源
          最近更新 更多