【问题标题】:Auto resizing text using UILabel as subview of UIButton - swift使用 UILabel 作为 UIButton 的子视图自动调整文本大小 - swift
【发布时间】:2019-02-01 04:56:43
【问题描述】:

我正在创建一个示例应用程序,其中在 UIButtonimage 上有一些文本,对于 imagetextsubViewUIButton。我用不同的设备运行过,比如iPhone 5iPhone X,结果和我预期的不一样,因为如果用屏幕小于iPhone X的设备运行,那么文本将漂浮在按钮之外。

到目前为止我做了什么:

lazy var myLabelButton: UILabel = {

    let label = UILabel()
    label.translatesAutoresizingMaskIntoConstraints = false
    label.text = "titleName"
    label.textColor = .white
    label.font = UIFont(name: "SFCompactText-Regular", size: 14)
    label.adjustsFontSizeToFitWidth = true
    label.minimumScaleFactor = 0.5
    label.sizeToFit()
    return label
}()

我搜索了一些资源,他们让我应用这些功能:

label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.5
label.sizeToFit()

以上三个功能都不行

这是整个代码:

button.addSubview(myLabelButton)
NSLayoutConstraint.activate([
  myLabelButton.centerXAnchor.constraint(button.centerXAnchor),
  myLabelButton.centerYAnchor.constraint(button.centerYAnchor),
  myLabelButton.widthAnchor.constraint(button.widthAnchor)
])

有什么解决办法吗?

【问题讨论】:

    标签: ios swift uibutton uilabel iosdeployment


    【解决方案1】:

    尝试在按钮本身而不是标签上使用 sizeToFit()。

    例如

    button.setTitle("Hello world", for: .normal)
    button.sizeToFit()
    

    【讨论】:

      【解决方案2】:

      给你,我有办法

          let label = UILabel()
          label.numberOfLines = 0
          label.textColor = .white
      
          let button = UIButton()
          button.backgroundColor = .blue
      
          view.addSubview(button)
          button.addSubview(label)
      
          label.text = Array(repeating: "Hello", count: 100).joined()
      
          button.translatesAutoresizingMaskIntoConstraints = false
          label.translatesAutoresizingMaskIntoConstraints = false
      
          // button constraint
          NSLayoutConstraint.activate([
              view.leadingAnchor.constraint(equalTo: button.leadingAnchor),
              view.trailingAnchor.constraint(equalTo: button.trailingAnchor),
              view.centerYAnchor.constraint(equalTo: button.centerYAnchor)
          ])
      
      
          // label constaint
          NSLayoutConstraint.activate([
              button.leadingAnchor.constraint(equalTo: label.leadingAnchor),
              button.trailingAnchor.constraint(equalTo: label.trailingAnchor),
              button.topAnchor.constraint(equalTo: label.topAnchor),
              button.bottomAnchor.constraint(equalTo: label.bottomAnchor)
          ])
      

      【讨论】:

        猜你喜欢
        • 2013-01-02
        • 2014-05-04
        • 2013-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多