使用 swift 在 scrollview 内的 stackview 中更改 uibutton 中的标题
Changing title in uibutton in stackview inside scrollview using swift
你能帮我解释一下为什么按钮标题的填充不起作用吗?
我有下面的代码,我从那里更新了 n 次按钮的标题。按钮位于水平滚动视图内。在 scrollview 里面我有一个 stackview。从滚动条外部,我更新了标题和填充,这是我无法控制的。
问题如下:如果我为按钮提供了一个巨大的标题,然后更改为一个短标题,则填充不会像我在下面的代码中确定的那样更新。
private func setupActionButtons(index: Int = 0, title: String = "") {
allButtons[index].layer.cornerRadius = allButtons[0].bounds.height/2
allButtons[index].layer.borderWidth = 1
allButtons[index].layer.borderColor = UIColor.borderShortcutButton.cgColor
allButtons[index].setTitleColor(.psGreyValueLabelFilled, for: .normal)
if title != "" {
allButtons[index].setTitle(title, for: .normal)
}
allButtons[index].titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
allButtons[index].contentEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 15)
allButtons[index].imageEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 0)
allButtons[index].imageView?.contentMode = .scaleAspectFit
allButtons[index].setImage(uiImage, for: .normal)
allButtons[index].semanticContentAttribute = UIApplication.shared.userInterfaceLayoutDirection == .rightToLeft ? .forceLeftToRight : .forceRightToLeft
allButtons[index].titleLabel?.font = UIFont.systemFont(ofSize: buttonFontSize, weight: UIFont.Weight.semibold)
allButtons[index].tag = index
allButtons[index].addTarget(self, action: #selector(self.handleSelectOption(sender:)), for: .touchUpInside)
}
更好地解释:当我为 stackview 中的两个按钮添加具有相似宽度的标题,然后我将其中一个按钮的标题更改为更小的宽度时,另一个按钮的宽度更大且填充更大另一个我改的排列正确。
问题是将堆栈视图的 Distribution
设置为 Fill Proportionally
将堆栈视图设置为 Fill
,问题就消失了。
附带说明:忘记你听说过 Fill Proportionally
...这是堆栈视图最容易被误解和误用的设置,除非你确切地知道它是如何工作的以及你想要使用的确切原因它,你不会得到你想要的布局。
你能帮我解释一下为什么按钮标题的填充不起作用吗?
我有下面的代码,我从那里更新了 n 次按钮的标题。按钮位于水平滚动视图内。在 scrollview 里面我有一个 stackview。从滚动条外部,我更新了标题和填充,这是我无法控制的。
问题如下:如果我为按钮提供了一个巨大的标题,然后更改为一个短标题,则填充不会像我在下面的代码中确定的那样更新。
private func setupActionButtons(index: Int = 0, title: String = "") {
allButtons[index].layer.cornerRadius = allButtons[0].bounds.height/2
allButtons[index].layer.borderWidth = 1
allButtons[index].layer.borderColor = UIColor.borderShortcutButton.cgColor
allButtons[index].setTitleColor(.psGreyValueLabelFilled, for: .normal)
if title != "" {
allButtons[index].setTitle(title, for: .normal)
}
allButtons[index].titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
allButtons[index].contentEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 15)
allButtons[index].imageEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 0)
allButtons[index].imageView?.contentMode = .scaleAspectFit
allButtons[index].setImage(uiImage, for: .normal)
allButtons[index].semanticContentAttribute = UIApplication.shared.userInterfaceLayoutDirection == .rightToLeft ? .forceLeftToRight : .forceRightToLeft
allButtons[index].titleLabel?.font = UIFont.systemFont(ofSize: buttonFontSize, weight: UIFont.Weight.semibold)
allButtons[index].tag = index
allButtons[index].addTarget(self, action: #selector(self.handleSelectOption(sender:)), for: .touchUpInside)
}
更好地解释:当我为 stackview 中的两个按钮添加具有相似宽度的标题,然后我将其中一个按钮的标题更改为更小的宽度时,另一个按钮的宽度更大且填充更大另一个我改的排列正确。
问题是将堆栈视图的 Distribution
设置为 Fill Proportionally
将堆栈视图设置为 Fill
,问题就消失了。
附带说明:忘记你听说过 Fill Proportionally
...这是堆栈视图最容易被误解和误用的设置,除非你确切地知道它是如何工作的以及你想要使用的确切原因它,你不会得到你想要的布局。