Имея только один вид автозапуска в xcode? - PullRequest
4 голосов
/ 08 ноября 2011

Хорошо, поэтому у меня есть 3 вида, и мне нужен только один из них для автоматического поворота в любой ориентации, в то время как остальные остаются в портретном режиме.Прямо сейчас моя установка - контроллер всплеска исчезает в представлении A, а в представлении A - кнопка, чтобы переключиться в представление B. Все, что я хочу, это чтобы представление B могло поворачиваться в любую ориентацию.

Когда яверните YES для mustautorotatetointerfaceorientation в splashviewcontroller, каждое представление вращается, потому что это родительское представление.Когда я возвращаю портрет только в виде всплеска, ничто не вращается, даже если другие виды возвращают ДА.Есть ли способ повернуть только вид B?Я готов сделать это вручную, если вы можете предоставить код.Спасибо

Ответы [ 2 ]

4 голосов
/ 08 ноября 2011

Вы можете вручную управлять вращением любого желаемого объекта UIView следующим образом:

EDIT:

В init или viewDidLoad

- (void)viewDidLoad
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(rotate) name:UIDeviceOrientationDidChangeNotification object:nil];

    [super viewDidLoad];
}

#define degreesToRadian(x) (M_PI * (x) / 180.0)

-(void)rotate{

    self.view.bounds = CGRectMake(0, 0, 0, 0);

    if ([UIDevice currentDevice].orientation == UIInterfaceOrientationPortrait){


        CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(0));
        landscapeTransform = CGAffineTransformTranslate (landscapeTransform, 0.0, 0.0);

        self.view.bounds = CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, 320, 480);

        [self.view setTransform:landscapeTransform];


    } else if ([UIDevice currentDevice].orientation == UIInterfaceOrientationPortraitUpsideDown){


        CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(180));
        landscapeTransform = CGAffineTransformTranslate (landscapeTransform, 0.0, 0.0);

        self.view.bounds = CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, 320, 480);

        [self.view setTransform:landscapeTransform];

    } else if ([UIDevice currentDevice].orientation == UIInterfaceOrientationLandscapeRight){

        CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(90));

         landscapeTransform = CGAffineTransformTranslate (landscapeTransform, 0.0, 0.0);
         self.view.bounds = CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, 480, 320); 


        [self.view setTransform:landscapeTransform];

    }else if ([UIDevice currentDevice].orientation == UIInterfaceOrientationLandscapeLeft){

        CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(270));

        landscapeTransform = CGAffineTransformTranslate (landscapeTransform, 0.0, 0.0);
        self.view.bounds = CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, 480, 320); 

        [self.view setTransform:landscapeTransform];
    }

}
0 голосов
/ 14 января 2013

Внутри сводного раздела целей, Поддерживаемая ориентация интерфейса, все элементы выбраны, кроме Upside Down, поэтому все, что вам нужно сделать, это перейти к вашему файлу .m, который обрабатывает представление, и использовать этот фрагмент кода.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

Это помогло мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...