Znalazłem inne zachowanie metody systemLayoutSizeFittingSize:
niż się spodziewałem.systemLayoutSizeFittingSize: na UILabel nie zachowuje się jak oczekiwano
Oto kod snipped do szybkiego Playground który demonstruje zachowanie, ale jego samego w 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()
Liczyłam, że layoutSize
i intrinsicSize
są takie same.
ale w tym przypadku layoutSize
jest (w 173, h 20)
i intrinsicSize
jest (w 40, h 104)
Spodziewam się zarówno za intrinsicSize
ale wydaje systemLayoutSizeFittingSize:
ignoruje preferredMaxLayoutWidth
Czy ktoś może mi to wyjaśnić?
Edit: także
label.setNeedsLayout()
label.layoutIfNeeded()
let layoutSize = label.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
let intrinsicSize = label.intrinsicContentSize()
nie zmieni wyników