Xcode Objective C:手势后在工具栏中锁定风景

Posted

技术标签:

【中文标题】Xcode Objective C:手势后在工具栏中锁定风景【英文标题】:Xcode Objective C: Locking Landscape in a Toolbar after a gesture 【发布时间】:2018-06-29 16:05:22 【问题描述】:

我想创建一个具有锁定横向方法和解锁的工具栏。我该怎么办? 我也只是希望它在滑动手势后显示。我已经弄清楚了滑动手势,但是在用户按下按钮后无法弄清楚如何锁定横向。 这是一个具有自动旋转功能的应用程序,并希望在用户想要锁定横向之前保留它。我应该在哪里调用或创建此方法?我是否需要创建另一个 UIViewController 并在主控制器中调用它?

【问题讨论】:

【参考方案1】:

您可以覆盖 UIViewController 上的 shouldAutorotate 方法。

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

此外,如果您需要设置特定的方向,您可以覆盖supportedInterfaceOrientations。

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

【讨论】:

嗨!快速提问。这只会锁定容器应用程序,但设备呢?我怎样才能同时锁定设备方向,以便在我拉快速设置或下拉通知时它不会崩溃?

以上是关于Xcode Objective C:手势后在工具栏中锁定风景的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C 是不是有任何基于非 Xcode 的命令行单元测试工具?

Objective-C 新手,在 Xcode 包中找不到 Foundation 工具

objective-c与C++的区别

xcode Objective C-构建类/对象

Xcode 8 和 Swift 无法构建 Objective C 模块'FBSDKLoginKit'

Objective C框架不能导出一些类