【问题标题】:iOS: UIButton is not increasing height to fit Title Label (without subclassing UIButton)iOS:UIButton 没有增加高度以适应标题标签(没有子类化 UIButton)
【发布时间】:2017-10-06 04:56:44
【问题描述】:

我有一个 UIButton 对象,它的标题在运行时确定。标题可能是多行的,所以我想增加 UIButton 对象的高度以匹配其标题标签的高度。我想创建 UIButton 子类,因为我读到这不是好的行为。这就是为什么我不明白为什么这个question 的答案(否则会解决这个问题)都涉及子类化 UIButton。这个answer 也涉及到 UIButton 的子类化。

我在 10.x 上使用自动布局,而 sizeToFit 似乎没有做任何事情。我也尝试过调用 invalidateIntrinsicContentSize ,但这也无济于事。我已将内容拥抱发送到 1 并将内容压缩发送到 999,但这也不起作用。

Apple 是否提供了任何官方解决方案来根据其标题标签自动调整 UIButton 的高度?与此相关的所有类似问题都给出了不同的解决方案,其中很多都涉及看起来很奇怪的事情(子类化 UIButton,为要在标题更改时更新的按钮添加高度约束,手动重新设置按钮)。

【问题讨论】:

    标签: ios cocoa-touch uibutton autolayout uikit


    【解决方案1】:

    使用自动布局的解决方案

    1. UIButton 对象的高度约束应该是大于或等于关系。

    2. [objBtn sizeToFit];

    【讨论】:

      【解决方案2】:

      在您的interfacebuilder 中拖放一个button。设置四个约束,例如“顶部、前导、固定宽度和固定高度”。

      然后选择fixed height约束->edit->然后将关系=更改为>=

      outlet 放入您的 Button 并放入您的 viewDidload

      self.yourBtn.titleLabel.numberOfLines = 0;
      [self.yourBtn setTitle:@"This is long title" forState:UIControlStateNormal];
      

      就是这样!!

      它会根据标题增加按钮的高度。同样,您也可以制作动态宽度!

      :)

      【讨论】:

        【解决方案3】:

        将换行模式设置为自动换行..

        button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多