在目标 c 中更改应用扩展的屏幕旋转

Posted

技术标签:

【中文标题】在目标 c 中更改应用扩展的屏幕旋转【英文标题】:change screen rotation of app extension in objective c 【发布时间】:2014-10-31 10:42:35 【问题描述】:

如何从旋转屏幕锁定,我希望我的应用扩展程序仅处于纵向模式。 当我在照片中使用我的扩展程序时,我可以将屏幕旋转为横向。

谢谢

【问题讨论】:

我不确定,但我认为您的应用扩展继承了您的项目设置。所以把屏幕锁在那里,它就会到处被锁定 False,项目设置似乎不会影响应用扩展方向。不管你检查了什么,ios 似乎默认一切都是有效的方向。 【参考方案1】:

你必须选择:

1-在项目中设置横向和纵向为支持的界面方向,然后对于每个ViewController,你将覆盖支持的界面方向;

2-在项目中只设置纵向模式,在需要的ViewController中,可以旋转90度

self.view.transform = CGAffineTransformMakeRotation(M_PI_2);

编辑:所以你可以这样做。将您的控制器设置为 keyPath UIDeviceOrientationDidChangeNotification 的观察者。那么:

-(void)changedOrientation: (NSNotification *)note

    if (note)
    
        UIDevice *dev = (UIDevice *)note.object;
        if ([dev orientation] == UIInterfaceOrientationLandscapeRight)
        
            self.view.transform = CGAffineTransformMakeRotation(M_PI_2);
        
        else if ([dev orientation] == UIInterfaceOrientationPortrait)
        
            self.view.transform = CGAffineTransformIdentity;
        
        else if ([dev orientation] == UIInterfaceOrientationPortraitUpsideDown)
        
            self.view.transform = CGAffineTransformIdentity;
        
        else if ([dev orientation] == UIInterfaceOrientationLandscapeLeft)
        
            self.view.transform = CGAffineTransformMakeRotation(-M_PI_2);
        
    

【讨论】:

其实我想禁用横向显示? 您好,我遇到了同样的问题。我只想在横向模式下显示 viewController。我的代码在 iOS 应用程序中有效,但在动作扩展中没有任何想法? 您好,我也发现这在 App Extensions 中不起作用。 UIDeviceOrientationDidChangeNotification 似乎没有被触发。

以上是关于在目标 c 中更改应用扩展的屏幕旋转的主要内容,如果未能解决你的问题,请参考以下文章

在 React Native App 上停止屏幕旋转 [关闭]

为啥屏幕旋转 180 度不算作配置更改?

AsyncTask 中代码崩溃的旋转屏幕

如何定制Windows Embedded Compact 7 shell详解

防止Android上的屏幕旋转

当 DialogFragment 通过屏幕旋转更改打开时,多次调用观察者