swift 为什么我的UIButton动画在高亮显示时会褪色/透明?

2hh7jdfx  于 2023-05-28  发布在  Swift
关注(0)|答案(1)|浏览(178)

我通过将UIBarButtonItem旋转45°(+ -> x)来为它的自定义视图设置动画。但是我的+图像在高亮显示时正在褪色。当它不再突出显示时,它会返回(x -> +),没有问题。我不知道如何在高亮显示时获得不褪色的图像/动画?
我有一个自定义按钮类:

class PlusButton: UIButton {
    override var isHighlighted: Bool {
        didSet {
            if isHighlighted == true {
                animateTurn45()
            } else {
                animateTurnNeg45()
            }
        }
    }
    func animateTurn45() {
        let rotationTransform = CGAffineTransform(rotationAngle: CGFloat.pi / 4)
        UIView.animate(withDuration: 0.5, animations: {
            self.transform = rotationTransform
        }) { (_) in
            // Animation completion handler
        }
    }
    func animateTurnNeg45() {
        UIView.animate(withDuration: 0.5, animations: {
            self.transform = .identity
        }) { (_) in
            // Animation completion handler
        }
    }
}

我的自定义按钮是我的UIBarButtonItem的customView:

let plusButton = PlusButton()
plusButton.setBackgroundImage(UIImage(systemName: "plus"), for: .normal)
plusButton.menu = UIMenu(title: "", children: menuItems)
popUpPlusButton.customView = plusButton

这就是VC的初始状态:

这就是高亮显示的状态:

当它返回到未高亮显示时,动画再次正常:

7xzttuei

7xzttuei1#

我自己通过更改自定义视图按钮的配置来解决这个问题。我将这些行添加到我的自定义UIButton类中:

var configurationPlain = UIButton.Configuration.plain()
self.configuration = configurationPlain

not fading image anymore

相关问题