我通过将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的初始状态:
这就是高亮显示的状态:
当它返回到未高亮显示时,动画再次正常:
1条答案
按热度按时间7xzttuei1#
我自己通过更改自定义视图按钮的配置来解决这个问题。我将这些行添加到我的自定义UIButton类中:
not fading image anymore