首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iPhone - UIViewController在设备方向改变时不旋转

在iPhone设备上,当设备方向改变时,UIViewController 默认不会自动旋转。为了实现这个功能,您需要在项目中启用横竖屏切换,并在需要旋转的UIViewController中实现相关方法。

以下是如何实现设备方向改变时自动旋转的步骤:

  1. 首先,在项目的Info.plist文件中,添加以下两个键值对:
代码语言:txt
复制
<key>UISupportedInterfaceOrientations</key><array>
   <string>UIInterfaceOrientationPortrait</string>
   <string>UIInterfaceOrientationLandscapeLeft</string>
   <string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key><array>
   <string>UIInterfaceOrientationPortrait</string>
   <string>UIInterfaceOrientationPortraitUpsideDown</string>
   <string>UIInterfaceOrientationLandscapeLeft</string>
   <string>UIInterfaceOrientationLandscapeRight</string>
</array>

这将允许您的应用支持所有的屏幕方向。

  1. 接下来,在需要旋转的UIViewController中,实现以下方法:
代码语言:swift
复制
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)

    if UIDevice.current.orientation.isPortrait {
        // 竖屏状态
    } else {
        // 横屏状态
    }
}

在这个方法中,您可以根据设备的方向来调整界面布局,以适应横竖屏切换。

请注意,这个方法只会在设备方向改变时被调用,如果您需要在其他情况下调整界面布局,请确保在适当的时机调用相应的方法。

总之,要在iPhone设备上实现UIViewController在设备方向改变时自动旋转,您需要在项目的Info.plist文件中启用所有所需的屏幕方向,并在需要旋转的UIViewController中实现viewWillTransition(to:with:)方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS屏幕旋转及其基本适配方法

设备方向:UIDeviceOrientation UIDeviceOrientation是硬件设备(iPhone、iPad等)本身的当前旋转方向设备方向有7种(包括一种未知的情况),判断设备方向是以...,不能设置, 获取设备当前旋转方向使用方法:[UIDevice currentDevice].orientation 监测设备方向的变化,我们可以Appdelegate文件中使用通知如下: [[NSNotificationCenter...没有被默认支持,因为对于iPhone即使勾选也没有UpSideDown的旋转效果。...我们可以在这里勾选或者取消以修改支持的旋转方向。如果是iPad设备勾选之后会同时支持四个方向。 值得注意的是,对于iPhone,如果四个属性我们都选或者都不选,效果和默认的情况一样。...方法2:需要默认横屏的界面里设置,进入时强制横屏,离开强制竖屏 关于这种使用,这个具体可以参考第五节中的demo2 注:两种方法不可同时使用 八、关于旋转后的适配问题 屏幕旋转的实现会带来相应的UI

8.9K60

ARKit和CoreLocation:第一部分

运行会话配置,ARKit会根据设备的位置和方向创建场景坐标系; ARAnchor您创建的任何对象或AR会话检测到的对象都是相对于该坐标系定位的。 ?...image.png worldAlignment.gravity - Apple Docs 首次运行会​​话配置设备的位置和方向决定了坐标系的其余部分:对于z轴,ARKit选择(0,0,-1)指向设备摄像机面向和垂直于重力轴的方向的基矢量...资源 worldAlignment.gravityAndHeading - Apple Docs 虽然此选项固定方向的三个坐标轴,以真实世界的方向,该位置的坐标系的原点仍是相对于设备,匹配当会话配置是第一次运行的设备的位置...向量,矩阵和线性代数,哦! ? 一个二乘四的矩阵 如果你还记得回到数学课,那么矢量有一个幅度和方向。...这些包括: 旋转改变方向) 缩放(大小更改) 翻译(移动位置) 转换 大多数情况下,转换点可以用以下等式表示: Transformed Point = Transformation Matrix ×

2.2K20

Cocoa编程中视图控制器与视图类详解

iPhone编程规则是:一个窗口,多个视图。UIView是iPhone屏幕上很多控件的基础类。...每个iPhone用户界面都是由显示UIWindow(这其实也是个特殊的UIView)内的众多UIView及其专门化子类构建的。...进度与活动: UIActivityIndicatorView UIProgressView  控制器类 UIViewController类       UIViewController负责创建其管理的视图及低内存的时候将它们从内存中移除...•设备方向变化,调整视图大小以适应屏幕。 •负责视图和模型之间的数据及请示的传递。 2. 视图控制器剖析 视图控制器有一个导航项,一个工具栏子项集以及一个tabbarItem项与其关联。 3....控制器加载视图过程 当调用视图控制器的view属性,视图控制器会先调用loadView方法加载视图,因此,可以loadView方法中创建所有的视图,这是比较好的编程惯例。

5K50

【IOS开发进阶系列】手势专题

1 touchesBegan手势         iPhone中处理触摸屏的操作,3.2之前是主要使用的是由UIResponder而来的如下4种方式:     - (void)touchesBegan...当创建手势,指定一个回调方法,当手势开始,改变、或结束,回调方法被调用。         添加到需要识别的View中。...每个手势只对应一个View,当屏幕触摸View的边界内,如果手势和预定的一样,那就会回调方法。         ...缩放和旋转有点问题,估计是因为模拟器上的模拟的两个接触点距离imageView的边界外了,所以操作无效果。建议真机上运行这个手势。         ...模拟器上缩放和选择的操作技巧:         可以把imageView的frame值设置大一点,按住alt键,按下触摸板(按下不行),这样就可以旋转和缩放了。

32640

iOS图片浏览器(功能强大性能优越)

于是组件中笔者的做法是,每次重写布局,都移动一个距离:当前偏移量 / 最大偏移量 * 总共页间距 其实做法很简单,但这种思维方式却非常实用,我们做很多需要平滑过渡的逻辑局限于界面),都可以以这种思维做出...七、屏幕旋转UI适配 找到组件必然支持的方向 组件支持了旋转功能,由于采用的是 UIViewController 作为底类,理所当然的是让组件内部子控件跟随 UIViewController旋转旋转...UIViewController旋转会直接受到工程 general -> deployment info -> Device Orientation 处的影响,所以,判断组件支持的旋转方向的时候,...可能旋转方向,也就是组件可能旋转方向。...布局更新时机优化 大家很容易就想到,当设备旋转过后,若组件支持该方向,就通知所有子界面刷新布局(可能有人会说用autolayout,但是考虑到效率和可控性方面的问题,本组件都采用frame处理)。

2.2K70

【 iOS 应用开发 】 UIKit 控件 ( UIView 属性 | storyboard 设置 | 模拟器 | 拖线关联 | tag | 软键盘操作 | 颜色值 | 代码生成控件 | 动画设置 )

; iPhone iPad 或者 通用; 3.Main Interface : 程序入口的 storyboard ; 4.Device Orientation : 屏幕的方向; Portrait 竖屏,...UIViewController 简介 : 1.界面启动 UIViewController 的行为 : 每当跳转到一个新的界面, 先***创建一个全新的 UIViewController 对象**...: 图片素材都是 工程中的 Assets.xcassets 中存放的, 开发 直接将素材拖到 Assets.xcassets 界面的 左侧位置, 如下图 红框位置; 素材直接从 Finder...---- ( 6 ) 关闭自动布局 ( ① 选中 ViewController | ② 文件查看器 | ③ 取消 Use Auto Layout 勾选 ) 关闭自动布局 : 如果 无法 控制 大小改变...章节, 有创建应用的过程说明 ; 设置大小 : Main.storyboard 选中 UIViewController 打开属性查看器, 调节 Simulated Metrics 中的大小为 IPhone5.5

4.6K30

IOS基础知识第二季

设备是4英寸之前是3.5英寸,视网膜技术960*640 iphone4 5.320*480 启动页 640*960 Default@2x.png iphone5 Default-568h@2x.png...创建自动释放池,调用UIApplicationMain,释放自动释放池 10.作业: icon、default、app名字、100秒倒计时、后台挂起 11.UIKIT框架结构 UIView是视图的基类 UIViewController...是视图控制器的基类 12.每个应用至少一个窗口,UIWindow继承UIView 自动创建(xcode4.5之后) 13.UIScreen对象可以充当IOS设备物理屏幕的替代者 14.Iphone4...之前320*480 IPHone4,4s是640*960 iphone5设备屏幕:640*1136 ipad/ipad2:1024*768 ipad3/ipad4:2048*1536 ipad...= [self.window viewWithTag:110]; _view.transform = CGAffineTransformRotate(_view.transform, 0.2);//旋转角度

94760

iOS14开发-入门知识

该系统最初是设计给 iPhone 使用的(所以后来曾命名为 iPhone OS),之后陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上(所以 WWDC 2010 上最终宣布更名为...还可以普通电脑上装一个黑苹果系统(推荐),安装复杂且不稳定。 开发软件 iOS 使用 Xcode 工具进行开发。...Cocoa Touch 层为应用程序开发提供了各种有用的框架,并且大部分与用户界面有关,它负责用户 iOS 设备上的触摸交互操作以及一些其他的关键功能。 创建第一个iOS项目 ?...所有放在界面上的 UI 控件都放在 UIViewController 的 UIView 之上, UIViewController 的代码中可以通过self.view属性获取它。...UIView 连线后改变类中的 @IBOutlet 或者 @IBAction 名字。

2.8K40

微信iOS9适配总结

每年iOS升级,都会带来一些坑,这次iOS9也例外。本文总结了微信适配iOS9上遇到的问题和解决方案。 一、iOS9问题汇总 1....然而,iOS9.1正式版上,苹果又把systemName改回"iPhone OS"了。或许苹果也发现这个小小的改动会引起一些致命问题,所以又改了回来。...支持所有的旋转方向 需要注意的是,支持分屏后,iPad上所有界面都需要支持转屏。...微信因为是使用了配置文件来处理不同设备的排版差异的,所以根据自己的实际情况,采用以下原则:320屏幕下按照iPhone5的排版;438屏幕下按照iPhone6的排版,其它分屏下按照iPad的排版。...如果某个功能用到了视频录制功能,建议像系统照相机一样,分屏给用户提示一下。 3.4 避免hardcode。

2K50

屏幕方向该知道的那些事儿

前言     这两天在学关于屏幕旋转的相关的知识,也延伸出了加速器和陀螺仪这些以前没有深入去学习过的知识点,没有仔细看之前也有一些问题在想,比如;用户关闭了手机的屏幕旋转,但根据我们的使用经验,APP...UIDeviceOrientationDidChangeNotification 可以的上场了,每当用户改变了手机屏幕的方向之后,我们都可以通过这个通知去判断手机屏幕的方向:(前提是用户开启了手机屏幕旋转功能...其实重点不是得用哪一个,都是屏幕改变之后收到的通知,你收到通知之后知道屏幕方向变了立马再去判断获取手机屏幕的方向,这才是重点,也是核心吧!...NSLog(@"本地设备模式:%@", ZXlocalizedModel);// iPhone /** * UUIDString  可用于唯一地标识该设备 */ NSUUID *identifierForVendor...advertisingIdentifier会给这个设备上所有软件的供应商返回给相同的一个值,所以只能在广告的时候使用。这个值会因为很多情况而有所变化,比如说用户初始化设备的时候便会改变

1.5K100

iOS 面向协议封装全屏旋转功能

-> UIInterfaceOrientationMask { if UIApplication.shared.lxf.allowRotation { // 可旋转屏幕所支持的方向...方法推荐直接使用,不过当遵守协议者为UIViewController,可以通过使用默认参数来切换屏幕方向lxf.switchFullScreen() ?...FullScreenableConfig说明 上述的方法都有一个config参数,默认为nil,即为默认配置 相关属性说明 Name Type Desc Default animateDuration Double 进入/退出 全屏旋转动画时间...0.25 enterFullScreenOrientation UIInterfaceOrientation 进入全屏的初始方向 landscapeRight 这里我们把动画时间设置为1s,初始方向为左后来看看效果...,除了本文提及的全屏旋转功能外还有其它实用功能的封装,具体内容可以到 Wiki首页 查找。

1K60

跟着官方文档学习3D Touch

支持3DTouch的设备上,app外,人们可以主屏幕上按压app图标来快速选择app可执行的某个具体的操作。...当用户支持3D Touch的设备上按压主屏幕上的app图标时候,显示主屏幕上的快捷操作项的个数是由系统决定的。...也就是说,iPhone和iPad设备的横屏和竖屏状态、缩放比例等都是界面环境。...同时这个协议也提供了一个可以重写的方法,当界面环境发生改变以供系统调用。...根据app实际需要,可以视图控制器或者视图中实现这个代理方法,以响应一些改变。比如:当iPhone从竖屏旋转到横屏,你也许需要调整控制器的子视图的布局,我们可以在这个方法中进行操作。

6.3K50
领券