Xcode Цель C: блокировка ландшафта на панели инструментов после жеста - PullRequest
0 голосов
/ 29 июня 2018

Я хочу создать панель инструментов, которая имеет метод блокировки ландшафта и разблокировку. Как я могу пойти по этому поводу? Я также просто хочу, чтобы он отображался после жеста смахивания. У меня есть жест смахивания, но я не могу понять, как заблокировать ландшафт после того, как пользователь нажмет кнопку. Это приложение, которое имеет функцию автоматического поворота и хочет сохранять ее до тех пор, пока пользователь не захочет заблокировать ландшафт. Куда мне обратиться или создать этот метод? Нужно ли создавать другой UIViewController и вызывать его в основном?

1 Ответ

0 голосов
/ 29 июня 2018

Вы можете переопределить метод shouldAutorotate в UIViewController.

https://developer.apple.com/documentation/uikit/uiviewcontroller/1621419-shouldautorotate?changes=_3&language=objc

Вот пример ViewController с одной кнопкой для блокировки / разблокировки вращения.

@interface ViewController (){
    bool rotationLocked;
}

@property (weak, nonatomic) IBOutlet UIButton *lockButton;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}


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

- (IBAction)togleRotationLock:(id)sender {
    rotationLocked = !rotationLocked;
    if (rotationLocked)
        [_lockButton setTitle:@"Ulock Rotation" forState:UIControlStateNormal];
    else
        [_lockButton setTitle:@"Lock Rotation" forState:UIControlStateNormal];
}

- (bool)shouldAutorotate{
    return !rotationLocked;
}

@end

Кроме того, вы можете переопределить supportInterfaceOrientations, если вам нужно установить определенную ориентацию.

https://developer.apple.com/documentation/uikit/uiviewcontroller/1621435-supportedinterfaceorientations?changes=_3&language=objc

...