gpt4 book ai didi

ios - systemLayoutSizeFittingSize : on UILabel not behaving like expected

转载 作者:搜寻专家 更新时间:2023-10-31 08:03:32 26 4
gpt4 key购买 nike

我发现 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()

我原以为 layoutSizeintrinsicSize 是一样的。

但在这种情况下,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()

不会改变结果

最佳答案

固有大小是内容 View 的计算结果,您在示例中得到了预期的结果。另一方面,layoutSize 取决于 View 的约束,因为您没有定义任何系统使用不使用固有大小的默认值。但是,如果您使用向标签添加几个约束,即在 View 中垂直和水平居中,那么系统将使用固有内容大小来最终确定布局,并且两个大小将相同。

objective-c 中的代码示例:

//This code assume you have a UILabel as IBOutlet named testLabel with two constrains
// to center the view, then in "viewDidLoad:"
self.testLabel.text =@"This is a Test Label Text";
self.testLabel.font = [UIFont preferredFontForTextStyle:(UIFontTextStyleBody)];
self.testLabel.numberOfLines = 0;
self.testLabel.preferredMaxLayoutWidth = 40;


CGSize layoutSize1 = [_testLabel systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];

CGSize intrinsicSize1 = [_testLabel intrinsicContentSize];

NSLog(@"\nlayout:%@\nintrinsicSize:%@",NSStringFromCGSize(layoutSize1),NSStringFromCGSize(intrinsicSize1));

对于这种情况,输出是:

2015-01-29 01:00:46.265 test[31327:911898] 
layout: {38.5, 130.5}
intrinsicSize:{38.5, 130.5}

关于ios - systemLayoutSizeFittingSize : on UILabel not behaving like expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25555968/

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