Ios UIButton框架不会随着使用Swift 5的大字体的可访问性而增加
UIButton标题(.body或.headline)的大辅助功能字体大小不会增加按钮的边框,而只会增加标题文本。在下面的屏幕截图中可以清楚地看到: 约束仅为顶部、前导和尾随,在代码中我还添加了两行:Ios UIButton框架不会随着使用Swift 5的大字体的可访问性而增加,ios,swift,uibutton,accessibility,font-size,Ios,Swift,Uibutton,Accessibility,Font Size,UIButton标题(.body或.headline)的大辅助功能字体大小不会增加按钮的边框,而只会增加标题文本。在下面的屏幕截图中可以清楚地看到: 约束仅为顶部、前导和尾随,在代码中我还添加了两行: button.adjustsImageSizeForAccessibilityContentSizeCategory = true button.titleLabel?.numberOfLines = 0 黄色背景色是按钮的颜色,因此确定只有可点击区域是黄色区域。我想增加按钮框,使整个文本区域
button.adjustsImageSizeForAccessibilityContentSizeCategory = true
button.titleLabel?.numberOfLines = 0
黄色背景色是按钮的颜色,因此确定只有可点击区域是黄色区域。我想增加按钮框,使整个文本区域可点击。可能的解决方案是:
button.titleLabel?.numberOfLines = 0
button.titleLabel?.lineBreakMode = .byWordWrapping
button.titleLabel?.masksToBounds = true
button.sizeToFit()
首先,多行按钮标签存在一个问题——我认为这与使用辅助功能字体没有直接关系 尝试使用此按钮子类:
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
}
}
它设置标题表的
.numberOfLines=0
,.textAlignment=.center
,以及拥抱优先级,然后覆盖标题表的intrinsicContentSize
,告诉auto layout标题表的正确大小。感谢您的响应,但已经尝试过使用这些行,对我来说没有任何效果。您可以将按钮的高度限制设置为大于或等于标准值(例如:heightconstraint>=35)。我也尝试过,我认为问题具体在于辅助功能字体。。。其他字体似乎工作正常。“intrinsicContentSize不适合自动布局”——嗯?许多自动布局都基于intrinsicContentSize。这就是为什么很少对UILabel
(甚至/尤其是多行标签)或UIButton
或UISlider
或UISwitch
等设置高度约束的原因。