HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – systemLayoutSizeFittingSize:在UILabel上的行为不像预期的那样大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_@L_262_0@_0@
发现了systemLayoutSizeFitTingSize:方法的不同行为,然后我预料到了.

这是一个快速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()

不会改变结果

解决方法

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

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:在UILabel上的行为不像预期的那样全部内容,希望文章能够帮你解决ios – systemLayoutSizeFittingSize:在UILabel上的行为不像预期的那样所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。