首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >手动创建UIDeviceOrientationDidChangeNotification事件

手动创建UIDeviceOrientationDidChangeNotification事件
EN

Stack Overflow用户
提问于 2018-03-04 17:05:29
回答 2查看 949关注 0票数 1

我们可以手动创建UIDeviceOrientationDidChangeNotification事件吗?

在AppDelegate.swif中,我有

代码语言:javascript
复制
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask 

此方法将根据用户设置返回结果。

它工作正常,但用户需要在应用程序运行过程中更改设置。

但设置会在用户旋转设备后生效,我想要的是让它立即生效

EN

回答 2

Stack Overflow用户

发布于 2018-03-04 17:12:34

使用NotificationCenter -

代码语言:javascript
复制
setupRotationListener()

/// Setup rotation listener
    func setupRotationListener() -> Void {
        NotificationCenter.default.addObserver(self, selector: #selector(self.rotated), name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)

    }

    /// Remove rotationListener
    func removeRotationlistener() -> Void {
        NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)

    }

    /// Rotate camera
    func rotated() {
        //do your task 
 if UIDevice.current.orientation.isLandscape {
        print("Landscape")
    } else {
        print("Portrait")
    }
    }
票数 0
EN

Stack Overflow用户

发布于 2018-03-04 17:29:19

I found a solution from stackoverflow

他的解决方案是真正解决我的问题:

iOS <= 4和iOS >= 6中的

代码语言:javascript
复制
UIViewController *vc = [[UIViewController alloc]init];
[self presentModalViewController:vc animated:NO];
[self dismissModalViewControllerAnimated:NO];
[vc release];

iOS 5中的

代码语言:javascript
复制
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
UIView *view = [window.subviews objectAtIndex:0];
[view removeFromSuperview];
[window addSubview:view];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49093734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档