gpt4 book ai didi

ios - UIButton 框架不会随着使用 Swift 5 的可访问性大字体而增加

转载 作者:行者123 更新时间:2023-11-28 05:39:06 26 4
gpt4 key购买 nike

UIButton 标题(.body 或 .headline)的大字体大小不会增加按钮的框架,只会增加标题文本。在下面的屏幕截图中可以清楚地看到:

https://www.dropbox.com/s/b62dz7f0qvw8tf4/Screenshot%202019-08-21%20at%2012.48.16%20PM.png?dl=0

约束只有顶部、前导和尾部,同样在代码中我添加了 2 行:

button.adjustsImageSizeForAccessibilityContentSizeCategory = true
button.titleLabel?.numberOfLines = 0

按钮的底色为黄色,从而标识唯一可点击的区域是黄色区域。我想增加按钮框架,以便整个文本区域都可以点击。

最佳答案

首先是多行按钮标签存在问题 - 我认为这与使用无障碍字体没有直接关系。

尝试使用这个按钮子类:

class MultilineTitleButton: UIButton {

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}

override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}

func commonInit() -> Void {
self.titleLabel?.numberOfLines = 0
self.titleLabel?.textAlignment = .center
self.setContentHuggingPriority(UILayoutPriority.defaultLow + 1, for: .vertical)
self.setContentHuggingPriority(UILayoutPriority.defaultLow + 1, for: .horizontal)
}

override var intrinsicContentSize: CGSize {
let size = self.titleLabel!.intrinsicContentSize
return CGSize(width: size.width + contentEdgeInsets.left + contentEdgeInsets.right, height: size.height + contentEdgeInsets.top + contentEdgeInsets.bottom)
}

override func layoutSubviews() {
super.layoutSubviews()
titleLabel?.preferredMaxLayoutWidth = self.titleLabel!.frame.size.width
}
}

它设置了titleLable的.numberOfLines = 0.textAlignment = .center,和hugging priorities,然后override的intrinsicContentSize告诉auto - 布局适当大小的 titleLabel。

关于ios - UIButton 框架不会随着使用 Swift 5 的可访问性大字体而增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57587105/

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