当我旋转图像视图时:
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))
}
}
答案 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.
}