【问题标题】:UIButton with increasing height if width is not enough?如果宽度不够,UIButton 会增加高度?
【发布时间】:2014-09-16 10:50:57
【问题描述】:

我需要一个按钮来通过autolayout 进行设置,如果水平空间不够高度会增加旋转后。我对父视图有一个前导和尾随约束,并且在纵向模式下空间不足,所以我在考虑不要减小字体大小,而是增加高度并将Word Wrap 设置为Line Break。我正在试验size classes,但不知何故总是使用wCompact hAny,因为我正在iPhone中进行测试。所以为不同尺寸类的按钮设置不同的高度是没有效果的。

有人知道如何通过自动布局约束根据可用按钮宽度和内容设置按钮高度吗?

下面的iPhone按钮需要两行,不是30px,而是appr。 60 像素。

【问题讨论】:

  • @janos- 按钮的最大宽度是多少...?
  • 没有“最大宽度”,这取决于正在运行的设备应用程序
  • @janos- 你必须决定按钮的最大宽度。
  • 我不会使用sizeWithAttributes 方法以编程方式进行

标签: ios uibutton autolayout


【解决方案1】:

为什么要使用按钮?这不是按钮的用途。如果您要显示这么多文本,请使用UILabelUITextView。然后,您可以向其添加手势识别器以捕捉点击。

【讨论】:

    【解决方案2】:

    你可以使用UILabel,也可以使用UITapGestureRecognizer就可以了。并在 nib 文件中设置行数=0,并具有一个轻按手势动作。它会像一个按钮一样工作,几乎没有你想要的代码

    【讨论】:

      【解决方案3】:

      因为我怀疑使用 Interface Builder 是不可能的,所以我通过子类化 UIButton 来实现它:

      class DynamicHeightButton: UIButton {
      
          override func layoutSubviews() {
              super.layoutSubviews()
      
              let size = (self.titleForState(UIControlState.Normal)! as NSString).boundingRectWithSize(CGSizeMake(self.bounds.size.width, CGFloat.max), options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: [NSFontAttributeName : UIFont.systemFontOfSize(17)], context: nil)
              self.bounds.size.height = size.height + 8
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-05
        • 2016-07-12
        相关资源
        最近更新 更多