J'ai donc cherché à connaître Core Motion et j'ai du mal à trouver quelque chose qui le ramènerait à un niveau débutant. Il semble qu'il n'y en ait pas trop par rapport à d'autres sujets. Mon but: faire un UILabel afficher l'angle du téléphone est sur (je crois à propos de l'axe z), 0 degrés étant lorsque le téléphone est en paysage.Swift CMMotion - Affichage de l'angle du téléphone
J'ai vu this article from NSHipster qui, je pense, m'avait envoyé dans le bon état, donc j'ai essayé de recréer le code qui est vu dans le .gif in this article. Il maintient le UIImageView vertical pendant que le téléphone s'incline ... pas de chance. Je ne comprends tout simplement pas la plus grande image de la façon dont tous ces extraits de code fonctionnent ensemble, je suppose que c'est la première fois que je joue le Core Motion.
Ma question:
1) Quelqu'un pourrait-il recréer ce imageView mobile vu dans ce lien pour moi afin que je puisse étudier la façon dont tout cela fonctionne (de préférence l'ensemble du dossier de viewController.swift).
Ou mieux encore
2) Mettre un code ensemble qui afficherait quel angle le téléphone est assis. Faites-moi savoir si je peux être plus précis. Merci beaucoup!
MISE À JOUR: Eh bien, je me suis surprise et j'ai réussi à travailler dessus, puis je suis venue ici pour poster et TJ Shae vient de poster la réponse haha ... m'a beaucoup dérangé mais je suis en route maintenant.
import UIKit
import CoreMotion
class AngleGaugeViewController: UIViewController {
@IBOutlet weak var rotX: UILabel!
@IBOutlet weak var rotY: UILabel!
@IBOutlet weak var rotZ: UILabel!
@IBOutlet weak var theAngle: UILabel!
@IBOutlet weak var imageView: UIImageView!
let manager = CMMotionManager()
override func viewDidLoad() {
super.viewDidLoad()
manager.gyroUpdateInterval = 0.1
manager.accelerometerUpdateInterval = 0.1
manager.startGyroUpdates()
manager.startAccelerometerUpdates()
let queue = NSOperationQueue.mainQueue
manager.startGyroUpdatesToQueue(queue()) {
(data, error) in
// ...
}
if manager.deviceMotionAvailable {
manager.deviceMotionUpdateInterval = 0.01
manager.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue()) {
[weak self] data, error in
let rotation = atan2(data!.gravity.x, data!.gravity.y) - M_PI
self?.imageView.transform = CGAffineTransformMakeRotation(CGFloat(rotation))
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Oui oui oui, ça a marché 1 minute avant que vous avez posté ça haha! merci tas pour l'entrée, c'est à peu près le même que je me suis retrouvé avec! – Steve
@TJ Comment savoir si l'appareil pointe vers l'envers, vers la gauche, vers la droite ou vers le haut? –