Swift Bar Button Item 360 Spin?

时间:2016-07-27 20:21:01

标签: ios swift xcode

之前我在这里看过类似的问题,但它们只涉及简单的按钮,而不是条形按钮项目。请记住,条形按钮项和常规按钮具有不同的属性,因此其他帖子的答案在这种情况下不起作用。

有没有办法,在swift中,我可以让我的刷新条按钮项目旋转一次360度(以显示某个动作发生)?

1 个答案:

答案 0 :(得分:1)

为了动画UIBarButtonItem,我们需要为其指定customView并为其设置动画。

我在下面所做的是创建一个普通的UIButton,并且我已将其图像分配给名为"刷新"的刷新图标。 。接下来,我将UIBarButtonItem customView设置为我的新按钮。既然barButton有一个customView,我可以调用我的rotateBarButton()方法来执行动画代码。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var barButton: UIBarButtonItem!

    override func viewDidLoad() {
        super.viewDidLoad()

        let button = UIButton(frame: CGRectMake(0, 0, 40, 40)) // Create new button & set its frame
        button.setImage(UIImage(named: "refresh"), forState: .Normal) // Assign an image 
        barButton.customView = button // Set as barButton's customView
    }

    func rotateBarButton() {
        // Gets you half way there //
        UIView.animateWithDuration(0.05, delay: 0.0, options: UIViewAnimationOptions.CurveEaseIn, animations: {
            self.barButton.customView?.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))
            }, completion: nil)
        // Rotates all the way around //
        UIView.animateWithDuration(0.5, delay: 0.5, options: UIViewAnimationOptions.CurveEaseIn, animations: {
            self.barButton.customView?.transform = CGAffineTransformMakeRotation(CGFloat(M_PI * 2))
            }, completion: nil)
    }
}