I have UIViewController which supports only Portrait orientation.
In this viewController i have MPMoviePlayerController object. By default the movie controller supports both landscape and portrait orientations.
When it is in full screen mode and turned into landscape orientation the main view controller also changes his orientation, after exiting the full screen mode , the main view does not changes his orientation.
If I turn the device to portrait orientation, the main view automatically returns to the right orientation. The problem is that i dont want to rotate the main view even if the device is in landscape orientation.
Is there any way to prevent the main view to change its orientation when the movie controller rotates in full screen mode? or what is the right way to return main view into Portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
must return NO is iOS 5 or
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
in iOS 6 in your ViewController.
Related
I have UIViewController presented using UIModalPresentationFormSheet style. Also my app support only landscape orientation. Then I try to use frames or animations in that controller and have strange effect, like my presented controller is in UIInterfaceOrientationPortrait but transformed on 90 degree. All methods (supportedInterfaceOrientations, preferredInterfaceOrientationForPresentation) have landscape only orientation in all controllers.
For a view controller, I am using the following code to restrict the orientation to landscape.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
However, the display result is not correct
It shows the portrait content inside the landscape window.
what will be the possible cause?
remove the unwanted orientation from your info.plist or just go through Autolayout in ios
I have 2 UIViews. The first supports only portrait. The second both portrait and landscape. To achieve that i change the return value of supportedInterfaceOrientations so that it gives the right orientations depending on what view i am.
When i change from screen 2 to screen 1 the view remains in a buggy landscape form, however when i rotate the device the View actually rotates to portrait and is locked there correctly. The reason for that is that when i rotate the device a rotation change event will be triggered.
my question: Is there a way to programmatically trigger a orientation change event?
I believe what you're looking for is preferredInterfaceOrientationForPresentation on view 1:
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
I've got a view controller in a UIPopoverController. I want to adjust the ui based on whether or not it is in portrait orientation.
No matter what orientation my iPad is in (physical device), self.interfaceOrientation always reports Portrait. I'm logging it in -viewWillAppear: and it's always Portrait.
Why?
Use:
UIInterfaceOrientation deviceOrientation = [UIApplication sharedApplication].statusBarOrientation;
to recognize statusBar oriantation.
A view controller in a popover is always in portrait. The popover's orientation is always portrait no matter which way the device is held.
If you wish to do something different in the view controller based on the device's orientation, look at the UIApplication statusBarOrientation.
Think of the popover as following gravity. It always points down.
I have application that is only landscape with no other orentation supported.
But when I open modal view (modal contains UIWebView ([printView setView:webView])) it rotates the device to portrait.
The content stays in landscape view only iPad orientation. I mean the statusbar is rotated like it's in portrait. So I want no rotation at all, just to stay in landscape.
I have solved the problem. Problem was in viewController that was programaticly created.
Solution is to create viewControler and in .m file force landscape orentation.