由于我的应用程序支持所有方向.我想只将肖像模式锁定到特定的UIViewController.

(e.g. Assume it was Tabbed Application and when SignIn View appear modally,I only want that SignIn View to the portrait mode only no
matter how the user rotate the device or how the current device
orientation will be)

当您具有复杂的视图层次结构时,如拥有多个导航控制器和/或制表视图控制器,事情会变得相当混乱.

该实现将它放在个人视图控制器上,以便设置何时锁定方向,而不是依赖App代理通过遍历子视图来查找它们.

Swift 3

在AppDelegate中:

/// set orientations you want to be allowed in this property by default
var orientationLock = UIInterfaceOrientationMask.all

func application(_ application: UIApplication,supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
        return self.orientationLock
}

在其他一些全局结构或帮助类中,我创建了AppUtility:

struct AppUtility {

    static func lockOrientation(_ orientation: UIInterfaceOrientationMask) {

        if let delegate = UIApplication.shared.delegate as? AppDelegate {
            delegate.orientationLock = orientation
        }
    }

    /// OPTIONAL Added method to adjust lock and rotate to the desired orientation
    static func lockOrientation(_ orientation: UIInterfaceOrientationMask,andRotateto rotateOrientation:UIInterfaceOrientation) {

        self.lockOrientation(orientation)

        UIDevice.current.setValue(rotateOrientation.rawValue,forKey: "orientation")
    }

}

然后在所需的ViewController中锁定方向:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    AppUtility.lockOrientation(.portrait)
    // Or to rotate and lock
    // AppUtility.lockOrientation(.portrait,andRotateto: .portrait)

}

override func viewWilldisappear(_ animated: Bool) {
    super.viewWilldisappear(animated)

    // Don't forget to reset when view is being removed
    AppUtility.lockOrientation(.all)
}

只有在Swift中,如何将一个视图控制器的方向锁定到纵向模式的更多相关文章

  1. ios – 在sendEvent方法上崩溃

    当我在选择几个项目后旋转应用程序两次时,它会崩溃.我重写了sendEvent方法,这是调试器停止的地方.当我尝试打印事件类型时,它会向我显示一些奇怪的东西(我认为这是一个不存在的内存位置):不知何故,我认为这与我如何处理轮换有关.我有一个主–细节风格的应用程序,它使用不同类型的导航来拍摄风景,拍摄肖像和手机.我创建了一个名为NavigationFlowController的类,它处理所有导航事件并

  2. ios – UIDeviceOrientation ipad

    我有以下代码根据方向填充视图.这总是会返回景观.我正确地改变了视图–(void)animateRotation:(UIInterfaceOrientation)interfaceOrientation持续时间:(NSTimeInterval)持续时间{但是在更改播放列表时已经在横向或纵向中不起作用.解决方法而不是使用[[UIDevicecurrentDevice]orientation]来检查方向

  3. iOS 9中的强制视图控制器方向

    我正在制作一个摄影应用程序,允许以肖像或风景拍摄照片.由于项目的要求,我不能让设备方向自动旋转,但确实需要支持旋转.使用以下定位方法时:我可以在启动时正确设置旋转.通过更改方向值并调用UIViewController.attemptRotationToDeviceOrientation(),我能够支持旋转到新的所需接口.但是,此旋转仅在用户实际移动其设备时发生.我需要它自动发生.我可以调用:UID

  4. 小胖说swift11-------- ios 进入某个VC强转为横屏,出VC后复原

    今天做项目,某一个VC需要展现VR展览内容,产品要求这个VC可以横屏查看,因为横屏查看的时候,看的范围比较大,但是其余的VC都是竖屏显示的,为了达到某个VC横屏显示其余VC不变的效果,然后查询资料,撸代码。。

  5. 只有在Swift中,如何将一个视图控制器的方向锁定到纵向模式

    由于我的应用程序支持所有方向.我想只将肖像模式锁定到特定的UIViewController.(e.g.AssumeitwasTabbedApplicationandwhenSignInViewappearmodally,IonlywantthatSignInViewtotheportraitmodeonlynomatterhowtheuserrotatethedeviceorhowthecurre

  6. 错误:screenSize | smallestScreenSize android studio Target SDK 23

    我正在尝试将heyZap广告集成到我的应用中,但我在构建时遇到此错误:错误:screenSize|smallestScreenSize).我搜索了它,我发现它的目标sdk错误应该至少为13但是在这里我使用的是SDK23.这是我的清单文件:这是我的build.gradle文件:这是错误的图片:这是我一直关注的链接:https://developers.heyzap.com/docs/android_

  7. Android ImageView按重量调整大小,不以父LinearLayout为中心

    理想情况下,我可以设置“重力”,或者设置宽度而不需要水平LinearLayout容器和重量的一些替代方法,因为没有那个容器我可以居中在我的顶级垂直LinearLayout中水平放置.谢谢!

  8. android – 保存数据并更改方向

    我有两个活动,我使用android:configChanges=“keyboardHidden|orientation|screenSize”一个主动用于纵向到第二个横向但是当方向发生变化时,会加载活动并丢失数据如何保存数据并更改活动方向?

  9. 在指定横向时,如何防止Android Activity暂时进入纵向模式?

    我怀疑这与应用程序在从纵向屏幕启动时自动旋转的事实有关.似乎奇怪的是,应用程序已被指示永远不会以纵向方式开始,然后快速更改.但是,有没有办法让它永远不会成像?我把它放在我的Activity’sonCreate中:这导致它永远卡在那里:)解决方法将此添加到您的活动中:

  10. android – 为什么我的Button的文字会被截断?

    我有一个正常的按钮,但是文字被截断了.我不知道为什么会这样.有谁可以分析它为什么会发生?

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部