CopyPastor

Detecting plagiarism made easy.

Score: 1; Reported for: Exact paragraph match Open both answers

Possible Plagiarism

Plagiarized on 2018-08-18
by Kalikanth040494

Original Post

Original - Posted on 2017-01-23
by bmjohns



            
Present in both answers; Present only in the new answer; Present only in the old answer;

1) Add this line in your `AppDelegate` class
var orientationLock = UIInterfaceOrientationMask.portrait 2) call this method in `AppDelegate` class
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { return self.orientationLock }
3) create a struct class Method locks Phone orientation to specified orientation - parameter orientation : takes the `UIInterfaceOrientationMask` struct AppUtility { static func lockOrientation(_ orientation: UIInterfaceOrientationMask) { if let delegate = UIApplication.shared.delegate as? AppDelegate { delegate.orientationLock = orientation } } /// OPTIONAL: Added method to adjust lock and rotate to the desired orientation static func lockOrientation(_ orientation: UIInterfaceOrientationMask, andRotateTo rotateOrientation:UIInterfaceOrientation) { self.lockOrientation(orientation) UIDevice.current.setValue(rotateOrientation.rawValue, forKey: "orientation") } }
4) call this on `viewDidLoad` of `viewcontroller` which you want to allow orientation
AppUtility.lockOrientation(.allButUpsideDown)
5) call this on `viewWillDisappear` of the same `viewcontroller` to allow all views to single orientation
AppUtility.lockOrientation(.portrait)
Things can get quite messy when you have a complicated view hierarchy, like having multiple navigation controllers and/or tab view controllers.
This implementation puts it on the individual view controllers to set when they would like to lock orientations, instead of relying on the App Delegate to find them by iterating through subviews.
**Swift 3**
In AppDelegate:
/// set orientations you want to be allowed in this property by default var orientationLock = UIInterfaceOrientationMask.all
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { return self.orientationLock }
In some other global struct or helper class, here I created AppUtility:
struct AppUtility {
static func lockOrientation(_ orientation: UIInterfaceOrientationMask) { if let delegate = UIApplication.shared.delegate as? AppDelegate { delegate.orientationLock = orientation } } /// OPTIONAL Added method to adjust lock and rotate to the desired orientation static func lockOrientation(_ orientation: UIInterfaceOrientationMask, andRotateTo rotateOrientation:UIInterfaceOrientation) { self.lockOrientation(orientation) UIDevice.current.setValue(rotateOrientation.rawValue, forKey: "orientation") }
}

Then in the desired ViewController you want to lock orientations:
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) AppUtility.lockOrientation(.portrait) // Or to rotate and lock // AppUtility.lockOrientation(.portrait, andRotateTo: .portrait) }
override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) // Don't forget to reset when view is being removed AppUtility.lockOrientation(.all) } **If iPad or Universal App**
Make sure that "Requires full screen" is checked in Target Settings -> General -> Deployment Info. `supportedInterfaceOrientationsFor` delegate will not get called if that is not checked. [![enter image description here][1]][1]

[1]: https://i.stack.imgur.com/w99KB.png

        
Present in both answers; Present only in the new answer; Present only in the old answer;