gpt4 book ai didi

ios - addSubview 如何使用内部尺寸?

转载 作者:行者123 更新时间:2023-11-28 15:09:10 24 4
gpt4 key购买 nike

以下代码的结果是:我没有看到标签。

我的理解是标签的 intrinsicSize 会允许标签拉伸(stretch)。为什么没有发生这种情况?

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(label)
}

let label : UILabel = {
let label = UILabel()
label.text = "How are you doing today my friend"
label.backgroundColor = .orange

return label
}()
}

最佳答案

这个:

let label = UILabel()

(0, 0) 创建标签宽度 0和高度0 .默认情况下,iOS 将从 frame 创建约束用于标签的位置、宽度和高度。

如果您想使用标签的固有大小,请禁用从框架创建约束并为标签提供约束以将其放置在 View 中。

例如(将标签添加为 subview 后):

label.translatesAutoresizingMaskIntoConstraints = false
label.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
label.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true

或者您可以使用 label.intrisicContentSize创建框架时:

label.frame = CGRect(origin: CGPoint(x: 40, y: 100), size: label.intrinsicContentSize)

注意:如果您使用 label.intrinsicSize设置 frame , frame更改标签文本时不会更改。你必须再次更新它:

label.frame.size = label.intrinsicContentSize

更改后label.text .


实际上,自动布局为标签的 instrinsicContentSize 创建了 4 个约束, 但这些约束的优先级低于从 frame 创建的约束,所以它们没有效果。通过禁用来自 frame 的约束创建,你给较低的优先级instrinsicContentSize约束有机会影响 UILabel 的布局.

您可以在 Apple's Auto Layout Guide 中阅读更多详细信息在标题为 Intrinsic Content Size 的部分中。

关于ios - addSubview 如何使用内部尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47947773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com