我想旋转条形按钮项目 - Swift

I want to rotate a bar button item - Swift

我遇到了一个问题。我想显示 3 个按钮,用于过滤我的 tableView。我从“SF symbols”中找到了合适的图像。除了一个,它与我用于过滤(从大到小)相同,但旋转了 180 度。我不知道如何旋转条形按钮项目,所以我决定将自定义按钮添加到条形按钮项目中。

出现问题——按钮太小了。

将按钮添加到栏按钮项后:

我试过用图片配置,但是不太好,因为看起来不一样,间距也不一样

配置按钮图像后:

在调试视图层次结构中,我发现符号配置为“中”,同时其他栏按钮项具有“主体,大”。但是我还没找到怎么改。

我有几个问题:

有没有办法在不添加自定义按钮的情况下翻转栏按钮项目?

如果第一个问题的方法不可能,那么真的可以像其他显示一样“动态”配置图像吗?


我的代码:

class viewController: UIViewController {
@IBOutlet var youngToOldfilterButton: UIBarButtonItem!
enter code here
    override func viewDidLoad() {
    let filterButton = UIButton(type: .custom)
    var image = UIImage(systemName: "line.3.horizontal.decrease.circle", withConfiguration: UIImage.SymbolConfiguration(pointSize: 22))
    filterButton.setImage(image, for: .normal)
    filterButton.sizeToFit()
    filterButton.addTarget(self, action: #selector(action), for: .touchUpInside)
    //rotation transform
    filterButton.transform = CGAffineTransform(rotationAngle: 180 * .pi/180)
    youngToOldfilterButton.customView = filterButton
    }

    @objc func action {
        ...
    }
}

symbol config is “Medium”, meanwhile other bar button items have “Body, Large”. But I haven’t found anything how to change it.

那个方法就是用符号配置。你的问题是你使用了错误的配置:

SymbolConfiguration(pointSize: 22))

那是说 Body, Large 吗?不,你想要这个:

SymbolConfiguration(textStyle: .body, scale: .large)

https://developer.apple.com/documentation/uikit/uiimage/symbolconfiguration/3294246-init

但是,最好的解决方案可能是直接根据“递减”图像设计您自己的自定义符号图像。这需要一些时间,但并不困难,而且您显然非常关心钢筋的确切厚度和位置,所以这可能是值得的。观看 https://developer.apple.com/videos/play/wwdc2021/10250 了解信息。