【问题标题】:UIButton label showing three dotsUIButton 标签显示三个点
【发布时间】:2017-01-13 09:42:03
【问题描述】:

我正在用这行代码设置按钮的标题:

self.timerButton.setTitle(String(Int(duration)), for: .normal)

按钮大小为屏幕的1/3,文字大小为60,在我之前的项目中这很好,但现在duration的值发生了变化(从120 ~ 0),文字经常而是显示...,有时甚至是数字的一半,这有什么问题?

以下是调试器中显示的约束:

【问题讨论】:

  • 试试 self.timerButton.sizeToFit()
  • 您在项目中使用自动布局吗?因为那取决于如何设置约束。
  • @Deny 是的,有限制
  • @Bhumi 有效,但有时文本仍会从中间剪掉
  • @BrightFuture 尝试删除按钮的前导和尾随约束,并尽可能用一些 centerX 约束替换它们。按钮也不应该有宽度限制。这取决于您的布局。

标签: ios swift uibutton uikit


【解决方案1】:

试试这个可能对你有帮助:

self.timerButton.titleLabel?.adjustsFontSizeToFitWidth = true

【讨论】:

  • 我也使用 layoutIfNeeded() 和上面的代码行
【解决方案2】:

@Deny 的评论很有帮助,我查看了我的约束,发现我用这种方法设置了按钮的图像大小:

self.contentEdgeInsets = UIEdgeInsets(top: (self.frame.height - imageSize) / 2, left: (self.frame.width - imageSize) / 2, bottom: (self.frame.height - imageSize) / 2, right: (self.frame.width - imageSize) / 2)

这会导致titleLabel 的大小小于应有的大小,因此我将上面的代码更改为:

self.imageEdgeInsets = UIEdgeInsets(top: (self.frame.height - imageSize) / 2, left: (self.frame.width - imageSize) / 2, bottom: (self.frame.height - imageSize) / 2, right: (self.frame.width - imageSize) / 2)

然后它起作用了。

TL;DR

问题是由约束引起的。

【讨论】:

    【解决方案3】:

    不是一个完美的解决方案,但设置宽度约束会强制按钮不要缩小太多,如下所示:

    myButton.translatesAutoresizingMaskIntoConstraints = false
    myButton.widthAnchor.constraint(greaterThanOrEqualToConstant: 180).isActive = true
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      相关资源
      最近更新 更多