如何将double类型转换为CGAffineTransform?

时间:2016-10-30 05:34:34

标签: ios swift

当我旋转图像视图时:

func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
    imageView?.transform = newHeading.trueHeading

}

我收到以下错误:

  

无法指定'CLLocationDirection'类型的值(又名'Double')来输入'CGAffineTransform'

如何转换/分配?

更新

一切正常编译,但是当我在模拟器中运行我的应用程序时(我没有任何iOS设备),我的imageview不会在真正的北方旋转。

为什么呢?

import UIKit
import CoreLocation

class ViewController: UIViewController,CLLocationManagerDelegate {

    var manager: CLLocationManager?
    var imageView: UIImageView?

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        manager = CLLocationManager()
        manager?.delegate = self;
        manager?.desiredAccuracy = kCLLocationAccuracyBest


        imageView = UIImageView(image:#imageLiteral(resourceName: "pointer"))
        self.view.addSubview(imageView!)

    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
        imageView?.transform = CGAffineTransform(rotationAngle: CGFloat(newHeading.trueHeading))

    }

}

1 个答案:

答案 0 :(得分:3)

trueHeading的类型为Double

为了旋转UIImageView,必须提供变换:

func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading)
{
    imageView?.transform = CGAffineTransform(rotationAngle: CGFloat(newHeading.trueHeading  * .pi / 180))
    // converting the value from degrees to radians, which CGAffineTransform expects.
}