Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1085
  • Last Modified:

xcode orientation

I have an app I am creating in portrate mode.

I am using storyboard and one one view controller I created a new view controller class for one view controller in my story board.

The view controller I want to force it to be in landscape mode. How do I do that? The purpose is to play a YouTube video on this view.

AlorVideo.h
#import "ViewController.h"
#import "AlorVideo.h"

@interface AlorVideo : ViewController

@property (weak, nonatomic) IBOutlet UIWebView *AlorVideo;


@end

Open in new window


AlorVideo.m
#import "AlorVideo.h"

@interface AlorVideo ()


@end

@implementation AlorVideo

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    

    
    // Alor Video
    //UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 241, 198)];
    
    [webView setMediaPlaybackRequiresUserAction:NO];
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Alor_Player" ofType:@"html"] isDirectory:NO]]];
    [self.AlorVideo addSubview:webView];
    
}


- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end

Open in new window


See screen shot from UI designer.
2014-04-17-10-03-49.png
0
Robert Saylor
Asked:
Robert Saylor
1 Solution
 
Hamidreza VakilianSenior iOS DeveloperCommented:
Hi,

Add this snippet to your viewController.m:

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}


-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
        return NO;
    else
        return YES;
}


- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationLandscapeRight;
}

Open in new window

0
 
satsumoSoftware DeveloperCommented:
Why are you creating an app in portrait if you want it to be landscape? Anyway, in the project settings disable the portrait orientations, and possibly one landscape orientation if you don't want to support both.

In your view controller, implement supportedInterfaceOrientations to return UIInterfaceOrientationMaskLandscape (Left or Right).

That should be enough to make it work, rotation can be tricky.
0
 
Robert SaylorSenior DeveloperAuthor Commented:
Thank you! Your code lead me to the solution.

I made these changes:

In viewcontroller.m (force portrait)
- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
    //return UIInterfaceOrientationMaskLandscape;
}


-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
        return NO;
    else
        return YES;
}


- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    //return UIInterfaceOrientationLandscapeRight;
    return UIInterfaceOrientationPortrait;
}

Open in new window


in AlorVideo.m (landscape)
- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}


-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
        return NO;
    else
        return YES;
}


- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationLandscapeRight;
}

Open in new window


Now, the pages I want in portrait stays in portrait and those I want in landscape stays in landscape.

The reason for this, our content is dive related material and the main pages look good in portrait where when we play a destination video is looks better in landscape.

Thank you for your help!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now