我发现
这里有一个 Swift Playground 的代码片段,演示了这个行为,但在 Objective-C 中也是一样的:
我本以为`layoutSize`和`intrinsicSize`是相同的。但在这种情况下,`layoutSize`是`(w 173, h 20)`,而`intrinsicSize`是`(w 40, h 104)`。我期望两者都是`intrinsicSize`,但似乎`systemLayoutSizeFittingSize:`忽略了`preferredMaxLayoutWidth`。有人能向我解释一下吗?
编辑:同时
systemLayoutSizeFittingSize:
方法的行为与我的预期不同。这里有一个 Swift Playground 的代码片段,演示了这个行为,但在 Objective-C 中也是一样的:
import UIKit
import Foundation
var label = UILabel()
label.text = "This is a Test Label Text"
label.numberOfLines = 0
label.font = UIFont.preferredFontForTextStyle(UIFontTextStyleBody)
label.preferredMaxLayoutWidth = 40
let layoutSize = label.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
let intrinsicSize = label.intrinsicContentSize()
我本以为`layoutSize`和`intrinsicSize`是相同的。但在这种情况下,`layoutSize`是`(w 173, h 20)`,而`intrinsicSize`是`(w 40, h 104)`。我期望两者都是`intrinsicSize`,但似乎`systemLayoutSizeFittingSize:`忽略了`preferredMaxLayoutWidth`。有人能向我解释一下吗?
编辑:同时
label.setNeedsLayout()
label.layoutIfNeeded()
let layoutSize = label.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
let intrinsicSize = label.intrinsicContentSize()
不会改变结果