gpt4 book ai didi

ios - 可以让 UIButton sizeThatFits 工作吗?

转载 作者:行者123 更新时间:2023-11-29 12:26:02 27 4
gpt4 key购买 nike

我一直在使用一种调整 UIButton 大小的方法,该方法已经过时,而且不是很可靠。出于这个原因以及其他原因,我想让 sizeThatFits 为 UIButtons 工作。根据我在网上阅读的内容,我不确定它是否应该工作(似乎它对某些人有效,但对其他人无效,可能是风格之间的差异,我使用的是自定义)。

这是我重现问题的简单测试代码(我只是把它放在 viewDidLoad 中进行测试,但应该没关系,我的真实代码是大型项目的一部分):

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setTitle:@"This is a test with a long title that will need to word wrap to more than a single line when displayed on my tiny iPod in portrait view." forState:UIControlStateNormal];
btn.titleLabel.lineBreakMode = UILineBreakModeWordWrap; // depreciated - but nothing to replace it?
CGRect r = btn.frame;
r.origin.x = 0;
r.origin.y = 0;
r.size.width = 320;
r.size.height = [btn.titleLabel.text sizeWithFont:btn.titleLabel.font constrainedToSize:CGSizeMake(r.size.width,100000) lineBreakMode:btn.titleLabel.lineBreakMode].height; // Returns approx 86 and changes correctly if I change the title text
r.size.height = [btn sizeThatFits:CGSizeMake(r.size.width,CGFLOAT_MAX)].height; // returns 34 no matter what
btn.frame = r;

sizeWithFont 行是我一直在做的,它有效,但它并没有要求实际控制大小,所以不是很安全并且也被贬值了。 sizeThatFits 行是我想要开始工作的,但无论如何它总是返回 34(可能是按钮的推荐/默认高度)。

我一直在使用相同的 sizeWithFont 来调整 UILabel 和其他一些控件的大小。我已经将它们更新为使用 sizeThatFits 并且它们工作得很好,只是 UIButton 的工作方式与其他按钮不同。 我希望有一个简单的修复方法(例如设置 UIButton 的属性)来让它正常工作?

我的应用只需要支持 iOS 8+,而不是旧版本。

更新:基于此处的评论 How do I resize a UIButton to fit the text without it going wider than the screen?和公认的答案,似乎我们可能会被 sizeWithFont 或其他低于标准的解决方案所困……该死。

最佳答案

我使用 UIButton titleLabel 而不是 UIButton 修复了它。

button.titleLabel?.sizeThatFits(labelFitSize)

代替

button.sizeThatFits(labelFitSize)

好消息是它可以工作,坏消息是如果按钮是 contentInsets 或图像,你需要自己处理......

关于ios - 可以让 UIButton sizeThatFits 工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29088288/

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