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

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 黄色背景色是按钮的颜色,因此确定只有可点击区域是黄色区域。我想增加按钮框,使整个文本区域

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

约束仅为顶部、前导和尾随,在代码中我还添加了两行:

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
等设置高度约束的原因。