Cómo crear una aplicación iOS de brújula simple con Swift 2.1 usando la vista de imagen y el acelerómetro

Esto es bastante fácil una vez que comprenda cómo funcionan algunos de los conceptos de ubicación de iOS.

Para crear una brújula, no necesita usar el acelerómetro directamente, puede usar el marco de ubicación central que genera datos relacionados con la ubicación actual de los usuarios.

importar CoreLocation

clase ViewController: UIViewController, CLLocationManagerDelegate {
var locationManager: CLLocationManager!

anular func viewDidLoad () {
super.viewDidLoad ()

locationManager = CLLocationManager ()
locationManager.delegate = self
locationManager.startUpdatingHeading ()
}

func locationManager (gerente: CLLocationManager !, didUpdateHeading header: CLHeading!) {
// Esto imprimirá la dirección en la que se dirige el dispositivo
println (header.magneticHeading)}
}

anular func didReceiveMemoryWarning () {
super.didReceiveMemoryWarning ()
}
}

En el ejemplo anterior, “header.magneticHeading” generará un valor que representa la dirección a la que apunta el dispositivo. Un valor de 0 significa norte, 90 significa este, 180 significa sur, 270 significa oeste y todo lo demás en el medio.

El siguiente paso es usar esos valores y rotar la vista de la imagen en consecuencia.

CGAffineTransformMakeRotation puede ayudar con esto.

Por ejemplo, si desea rotar a la vista de imagen para apuntar hacia el noreste, lo que requeriría un valor de grado de 45, su código podría verse así.

grados de flotación = 45;
imageView.transform = CGAffineTransformMakeRotation (grados * M_PI / 180);

Solo tenga en cuenta que CGAffineTransformMakeRotation () espera un valor en radianes, en el ejemplo anterior hemos convertido grados a radianes multiplicando grados con el número de semicírculos. Puede encontrar más información al respecto aquí.

Otras lecturas:

Una vez que tenga todo eso funcionando, le sugiero que lea sobre la precisión del rumbo. La razón es que no todos los datos de rumbo recibidos son 100% precisos, es importante determinar la precisión de la información de rumbo y solo rotar la imagen cuando se alcanza la precisión suficiente.

¡Diviértete y buena suerte!