Как управлять автоповоротом с помощью кнопки в Objective-C?

#ios #autorotate

#iOS #автоматическое вращение #автозапуск

Вопрос:

Я развиваюсь в Objective-C

Я использую следующий код, чтобы заблокировать screen orientation и установить его в UIInterfaceOrientationPortrait .

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

- (BOOL)shouldAutorotate
{
    return NO;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}
  

Но я хочу заблокировать screen rotate динамику с помощью UIButton . Например , если текущее shouldAutorotate равно No . Оно изменится на YES , когда я нажму Button . Как следующий псевдокод.

 - (IBAction) lock_Auto_rotate:(id)sender {

    if(Autorotate == YES){
       Autorotate = NO;
    }else{
       Autorotate = YES;
    }
}
  

Как управлять auto rotate с помощью Button ?

Заранее благодарю.

Ответ №1:

Вы на правильном пути, просто нужно выполнить некоторые манипуляции. Взгляните на приведенный ниже фрагмент кода.

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if (isRotateOn) 
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
else
 {
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
 }
}

- (BOOL)shouldAutorotate
{
 if (isRotateOn) 
 {
    return YES;
 }
 else
 {
    return NO;
 } 
}

- (NSUInteger)supportedInterfaceOrientations
{

 if (isRotateOn)
 {
    return UIInterfaceOrientationMaskAll;
 }
 else
 {
    return UIInterfaceOrientationMaskPortrait;
 }

}

-(IBAction)btnRotateOnOffAction:(id)sender
{

if ([self.btnRotateOnOff.titleLabel.text isEqualToString:@"On"])
{
    isRotateOn =YES;
    [self.btnRotateOnOff setTitle:@"Off" forState:UIControlStateNormal];

}
else
{
    isRotateOn = NO;
    [self.btnRotateOnOff setTitle:@"On" forState:UIControlStateNormal];


}

}


Let me know if you have any queries.