【问题标题】:Unable to add space between label and it's border无法在标签与其边框之间添加空格
【发布时间】:2018-10-21 21:44:14
【问题描述】:

我有一个带有矩形边框的标签。我希望在标签的文本和标签的边框之间添加空格。
我尝试按照此处描述的步骤操作:https://stackoverflow.com/a/40385630/9735046

myLabel.frame.size.width = myLabel.intrinsicContentSize.width + 10
myLabel.frame.size.height = myLabel.intrinsicContentSize.height + 10
myLabel.textAlignment = .center

但它没有在我的标签文本和边框之间添加空格。
如何添加空间?

【问题讨论】:

  • 你把这段代码放在哪里了?
  • 在我的 viewDidLoad() 方法中
  • 你在计算尺寸之前是否设置了标签的text属性?
  • 在 viewDidLayoutSubviews 中试试
  • @SergeyLevkachev 是的,我有

标签: ios swift padding


【解决方案1】:

自动布局可能会覆盖您的大小更改。尝试向标签添加大小约束。请注意,这在 Storyboard 中比在代码中更容易。

【讨论】:

  • 即使设置了约束,也会覆盖它。加上大小约束不能保证标签中的文本长度是多少
  • 直到下一次触发布局更新,这可能是立即。
  • 是的,但代码仍在 viewDidLayoutSubviews 中,它也会覆盖它
  • 是的,如果您将此代码放在 viewDidLayoutSubviews 中,那么它应该可以工作。
【解决方案2】:

问题出在viewDidLoad 框架尚未设置所以试试这个

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.



    lb.text = "dbjsjdhsjhdshjdshjdshdjs"

    lb.layer.borderColor = UIColor.red.cgColor

    lb.layer.borderWidth = 3

    lb.textAlignment = .center

    view.addSubview(lb)

    lb.sizeToFit()

    lb.center = view.center
}

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    lb.frame.size.width = lb.intrinsicContentSize.width + 100

    lb.frame.size.height = lb.intrinsicContentSize.height + 100

    lb.center = view.center

}

//

【讨论】:

    【解决方案3】:

    看看它的简单。如果您的标签宽度大于文本并使用 textalignment 作为中心,那么它将按照您的意愿工作,并且文本将位于中心,在标签的开始和结束处有空间。如下:

    如果您不希望将文本对齐作为中心并且希望将文本对齐保持在左侧,则如下所示:

    所以现在左对齐并且您希望边框和文本之间有空格,那么您必须在实际文本值开始之前添加空格,如下所示:

        let strValue = "I want Space"
        label?.text = " \(strValue)"
    

    结果将是这样的:

    所以你可以看到区别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-09
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多