アプリ内の固定デバイスの向きをポートレートのみに制限しました。しかしInstagramのように私はカメラ機能を持っていますので、現在の方向を迅速に取得する必要がありますが、向きは常にポートレートとして表示されます。ジャイロスコープを使用して手動で方向を取得する方法はありますか?アプリでオリエンテーションが制限されている場合、デバイスの向きを手動で判断するにはどうすればよいですか?
0
A
答えて
0
Swift 2.3では、次のコードを使用してAVCaptureDeviceInputの向きを設定できます(または独自の機能で置き換えることもできます)。あなたが自動回転をサポートしていない場合でも、あなたの方向性を伝えることができます> FSCameraView.swift
import CoreMotion
//var videoInput: AVCaptureDeviceInput?
let motionManager = CMMotionManager()
if motionManager.gyroAvailable {
motionManager.deviceMotionUpdateInterval = 0.2;
motionManager.startDeviceMotionUpdates()
motionManager.gyroUpdateInterval = 1
motionManager.startDeviceMotionUpdatesToQueue(NSOperationQueue.currentQueue()!) {
(data: CMDeviceMotion?, error:NSError?) in
if let videoConnection = self.imageOutput?.connectionWithMediaType(AVMediaTypeVideo) {
if (data?.gravity.x)! > -0.6 && (data?.gravity.x)! < 0.6 {
if (data?.gravity.y)! < 0.4 {
videoConnection.videoOrientation = .Portrait
} else {
videoConnection.videoOrientation = .PortraitUpsideDown
}
} else {
if (data?.gravity.x)! < 0 {
videoConnection.videoOrientation = .LandscapeRight
} else {
videoConnection.videoOrientation = .LandscapeLeft
}
}
}
//print(data?.gravity.x)
//print(data?.gravity.y)
//print(data?.gravity.z)
}
}
1
UIDevice -
私はhttps://github.com/ytakzk/Fusumaでこのコードを使用しています。私はこれを使用して、1つのビューコントローラでのみ回転を処理します:
override func viewDidLoad() {
super.viewDidLoad()
UIDevice.current.beginGeneratingDeviceOrientationNotifications()
NotificationCenter.default.addObserver(self, selector: #selector(orientationChanged), name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)
}
deinit {
UIDevice.current.endGeneratingDeviceOrientationNotifications()
NotificationCenter.default.removeObserver(self)
}
@objc private func orientationChanged(_ notification: Foundation.Notification) {
currentOrientation = UIDevice.current.orientation
}
関連する問題
- 1. SQLAlchemy - Queryオブジェクトが指定されている場合、制限が既に適用されているかどうかを判断できますか?
- 2. pygameでキャラクターが移動できる場所を制限するにはどうすればよいですか?
- 3. リンクが訪問されたかどうかを判断するにはどうすればよいですか?
- 4. [ウィンドウのmakeKeyAndVisible]が呼び出される前にビューがロードされている場合、デバイスの向きを判断する方法はありますか?
- 5. アプリを閉じるときにデバイスから切断するにはどうすればよいですか?
- 6. 戻るボタンが表示されているかどうかはどのように判断できますか?
- 7. デバイスが4Gをサポートしているかどうかはどのように判断できますか?
- 8. 抽象メソッドが実装されているかどうかはどのように判断できますか?
- 9. デバイスに振動があるかどうかを判断できますか?
- 10. アプリがFacebook広告経由でインストールされているかどうかを判断できますか?
- 11. UIPrintInteractionControllerが表示されているかどうかをどのように判断できますか?
- 12. 特定のアプリが使用されたときにPowershellでどのように判断するのですか?
- 13. どのように私はソフトウェアがインストールされている判断するシェルを使用できますか?
- 14. JavaがWindowsシステムにインストールされているかどうかをプログラムで判断するにはどうすればよいですか?
- 15. テーブル内のチェックボックスがチェックされている場合は、どうすれば入手できますか
- 16. Googleでアプリを入手するにはどうすればよいですか?
- 17. どのライブラリが使用されていないかをどのように判断するのですか
- 18. すでに限定されたクエリを制限するにはどうすればよいですか?
- 19. scpがPerlから入手できるかどうかはどのように判断できますか?
- 20. Javaでは、スレッドが実行されているかどうかをどのように判断しますか?
- 21. 複合コンポーネントでJSF2ファセットが定義されているかどうかを判断できますか?
- 22. バージョンコード以外にAndroidマーケットでアプリを更新できるかどうかを判断するにはどうすればよいですか?
- 23. 手動で事前定義されたAndroidデバイスIDを渡すにはどうすればよいですか?
- 24. ドメインが無制限のアプリでマップを使用するにはどうすればよいですか?
- 25. ファイルの種類が適切でないかどうかをきれいに判断するにはどうすればよいですか?
- 26. ビデオが再生されているかどうかをプログラムで判断することはできますか?
- 27. LandscapeでmodalViewControllerを制限するにはどうすればよいですか?
- 28. いずれかのアクティビティが表示されているかどうかを判断する(バックグラウンドのアプリ)
- 29. 制約がVFLでプログラムで作成されている場合、制約の変更をアニメーション化するにはどうすればよいですか?
- 30. 縦向きのUIPopoverControllerを制限するにはどうすればいいですか?