gpt4 book ai didi

ios - 调整大小以适合其 titleLabel 的 UIButton

转载 作者:IT王子 更新时间:2023-10-29 07:48:20 32 4
gpt4 key购买 nike

我有一个 UIButton,我将它添加到 Storyboard 中的 View Controller View 中。我添加居中约束来定位它,并添加前导空间约束来限制它的宽度。在我添加的代码中:

self.button.titleLabel.numberOfLines = 0;
self.button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
[self.button setTitle:@"A real real real real real real real real long long name." forState:UIControlStateNormal];
self.button.backgroundColor = [UIColor redColor];
self.button.titleLabel.backgroundColor = [UIColor blueColor];

结果如下图所示:

enter image description here

我希望按钮的大小适合其内容。我该怎么做?

我试过了

[self.button sizeToFit];

并且我已经尝试将内容拥抱和抗压缩自动布局约束优先级设置为必需。

我还尝试将 contentEdgeInsetstitleEdgeInsets 显式设置为 UIEdgeInsetsZero 并调用 invalidateIntrinsicContentSize

我还注意到,如果我在标题字符串中放置换行符,按钮似乎会调整大小以适应其内容。

我在 iPhone 6 模拟器上运行 Xcode 6 和 iOS 8。

最佳答案

Swift 4.x 版本 Kubba's回答:

需要在界面生成器中将 Line Break 更新为 Clip/WordWrap/ 以对应按钮。

class ResizableButton: UIButton {
override var intrinsicContentSize: CGSize {
let labelSize = titleLabel?.sizeThatFits(CGSize(width: frame.width, height: .greatestFiniteMagnitude)) ?? .zero
let desiredButtonSize = CGSize(width: labelSize.width + titleEdgeInsets.left + titleEdgeInsets.right, height: labelSize.height + titleEdgeInsets.top + titleEdgeInsets.bottom)

return desiredButtonSize
}
}

关于ios - 调整大小以适合其 titleLabel 的 UIButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27259333/

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