[英]Change a SF Symbol size inside a UIButton
I am declaring a Button like this :我正在声明一个这样的按钮:
let menuButton = UIButton()
After that I am trying to change it's parameter and set his position on the view with the help of LBTATools (a pod) with this function:之后,我尝试更改它的参数并在 LBTATools(一个 pod)的帮助下使用此功能设置他在视图上的位置:
fileprivate func setMenuButtonUI() {
menuButton.setImage(UIImage(systemName: "line.horizontal.3.decrease.circle.fill"), for: .normal)
view.addSubview(menuButton)
menuButton.anchor(top: view.safeAreaLayoutGuide.topAnchor, leading: view.leadingAnchor, bottom: nil, trailing: nil, padding: .init(top: 20, left: 60, bottom: 0, right: 0), size: .init(width: 40, height: 40))
menuButton.setupShadow(opacity: 1, radius: 5, offset: .zero, color: .darkGray)
menuButton.tintColor = .red
}
Everything is working well, I get the right color, position and even size.一切运行良好,我得到了正确的颜色、位置甚至尺寸。 Only problem is it's size, I cannot change it with all the usual methods like
menuButton.imageView?.contentMode = .scaleAspectFit
etc..唯一的问题是它的大小,我不能用所有常用的方法来改变它,比如
menuButton.imageView?.contentMode = .scaleAspectFit
等。
Probably it comes from the fact that it is a SF Symbol and not a normal image.可能是因为它是 SF Symbol 而不是普通图像。
The help of someone would be really appreciated.某人的帮助将不胜感激。
Thanks谢谢
You can do it using SymbolConfiguration
like in the sample code below:您可以使用
SymbolConfiguration
来做到这一点,如下面的示例代码所示:
let largeConfig = UIImage.SymbolConfiguration(pointSize: 140, weight: .bold, scale: .large)
let largeBoldDoc = UIImage(systemName: "doc.circle.fill", withConfiguration: largeConfig)
button.setImage(largeBoldDoc, for: .normal)
Objective C:目标 C:
UIImageSymbolConfiguration * configuration = [UIImageSymbolConfiguration configurationWithPointSize:30 weight:UIImageSymbolWeightBold scale:UIImageSymbolScaleLarge];
UIImage * image = [UIImage systemImageNamed:@"" withConfiguration:configuration];
[_btn setImage:image forState:UIControlStateNormal];
The iOS 15 and Swift 5 solution would be: iOS 15 和 Swift 5 解决方案是:
var config = UIButton.Configuration.plain() // Change style with e.g. `.filled()`
config.title = "Title of the UIButton"
config.image = UIImage(systemName: "line.horizontal.3.decrease.circle.fill",
withConfiguration: UIImage.SymbolConfiguration(scale: .small)) // Change the scale here
config.imagePadding = 4 // Padding between image and title
let menuButton = UIButton()
menuButton.configuration = config
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.