UIButton with shadow rotating 没有阴影旋转

UIButton with shadow rotating without shadow rotating

目前我有一个从 UIButton 扩展中提取属性的按钮。

    func mapControllerButtons(image: String, selector: Selector) -> UIButton {
        let button = UIButton()
        button.setImage(UIImage(named: image)!.withRenderingMode(.alwaysOriginal), for: .normal)
        button.layer.shadowColor    = UIColor.black.cgColor
        button.layer.shadowOffset   = CGSize(width: 0.0, height: 3.0)
        button.layer.shadowRadius   = 5
        button.layer.shadowOpacity  = 0.5
        button.layer.masksToBounds  = false
        button.addTarget(self, action: selector, for: .touchUpInside)
        return button
    }
}

这会在 button 下方创建一个阴影,但是我有另一个功能可以旋转按钮,向用户发出信号,表明正在从 API.[=18= 加载数据]

目前我正在做的是创建带有阴影的 button 并用没有阴影的 button 覆盖它。无影的button就是会被点击旋转的

我有一种直觉,比创建两个 buttons 有一个吃内存只是为了它可以作为占位符(用于阴影效果)更好的方法。

我怎样才能创建一个可以使用 animateWith func 旋转的按钮,同时阴影保持在原位?

这是我的动画代码块。

    func animateRefreshButton() {
        UIView.animate(withDuration: 1.0, delay: 0.0, options: .repeat, animations: {
            self.refreshButton.transform = CGAffineTransform(rotationAngle: .pi)
        })
    }

您可以尝试旋转按钮的 imageView 而不是整个按钮:

func animateRefreshButton() {
    UIView.animate(withDuration: 1.0, delay: 0.0, options: .repeat, animations: {
        self.refreshButton.imageView?.transform = CGAffineTransform(rotationAngle: .pi)
    })
}