【Xamarin挖墙脚系列:IOS-关于手机支持的屏幕方向】

设置支持的屏幕方向有两个级别,一个是app级别的,另一个是viewController级别的。

app 级别的可以在[target]-[general]-[device orientation]里面设置,

默认情况下Upside Down没有勾选,其他都勾选了。

(为什么Upside Down不推荐勾选呢,因为iPhone的电话app是不支持Upside Down的,如果你的app支持Upside Down,万一用户在用你的app的时候Upside Down了,这时候来了电话,就会看到整个来电的画面是颠倒的,用户体验很不好。一向注重用户体验的苹果是不推荐你勾选Upside Down的)

viewController级别的就是在各个viewController里面设置了。

这里有一点需要注意,viewController的设置受app级别设置的限制,也就是viewController能够设置的屏幕方向只能是在app级别中勾选的一种或多种,没有勾选的是不能设置的。比如上面的Upside Down没有勾选,那么viewController也就不能设置Upside Down的方向。

那么在viewController里面怎么设置屏幕方向呢?

iOS6以前:

// 设置屏幕只支持竖向
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

从iOS6开始,上面的方法已经被抛弃,有了3个新的方法:

// 不支持屏幕旋转
- (BOOL)shouldAutorotate
{
return NO;
}

// 只支持竖向
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationPortrait;
}

// 画面一开始加载时就是竖向
// - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
// return UIInterfaceOrientationPortrait;
// }

如果iOS6之前的版本也对应,那么被抛弃的那个方法也需要加上去。

但是,iOS8.3开始,在有UIAlertView的viewController里面,弹出UIAlertView的时候会崩溃,Log信息如下:

Terminating app due to uncaught exception ‘UIApplicationInvalidInterfaceOrientation‘,
reason: ‘Supported orientations has no common orientation with the application,
and [_UIAlertShimPresentingViewController shouldAutorotate] is returning YES‘

通过查阅官方文档,发现supportedInterfaceOrientations方法的返回值是UIInterfaceOrientationMask类型的,所以应该用UIInterfaceOrientationMaskPortrait。UIInterfaceOrientationMask类型从iOS6就有了,只不过到iOS8.3才会崩溃。

至于preferredInterfaceOrientationForPresentation方法,返回值还是老的UIInterfaceOrientation类型。

时间: 2024-10-09 08:24:01

【Xamarin挖墙脚系列:IOS-关于手机支持的屏幕方向】的相关文章

iOS_关于手机支持的屏幕方向

设置支持的屏幕方向有两个级别,一个是app级别的,另一个是viewController级别的. app 级别的可以在[target]-[general]-[device orientation]里面设置,如下图: 默认情况下Upside Down没有勾选,其他都勾选了. (为什么Upside Down不推荐勾选呢,因为iPhone的电话app是不支持Upside Down的,如果你的app支持Upside Down,万一用户在用你的app的时候Upside Down了,这时候来了电话,就会看到整

【Xamarin挖墙脚系列:Xamarin4.0的重大变更】

Windows下的变更不大,主要还是bug 的修复,性能的优化,API的扩展实现. 变化最大的是在Mac上的那个Xamarin.iOS build host .那个配对的代理软件,消失了!!!!!!!!!!!!你他么是在逗我啊!!!!!!劳资连夜升级,熬夜找那个build host  ,你他么说升级消失了! 官方的意思是:那个代理软件太麻烦啦,换成自动化的SSH登录识别,MAC机器一次性开启远程登录,后续的客户机只要有对应的登录指纹就可以连接了!! 相当于在VS中,进行了远程登录搭配Mac作为的

【Xamarin挖墙脚系列:Xamarin正式发布了IOS的模拟器在Windows下】

xamarin 的发展越来越迅速.如果还感觉这玩意儿是个鸡肋,辣么请跟的上时代吧 . (额,对微软产品有严重偏见的请绕行..............其实你可以看看.net 基金会现有的开源项目再说不开源啊,跨平台差啊,性能不好啊) *******************摒弃偏见,发掘机会,仅此而已*************************** *******************如果你是一个程序开发者,那么看机会和瓶颈************** ******************如

【Xamarin挖墙脚系列:开始使用Xamari4.0系列产品开发IOS】

一直沉默在Xamarin3.0系列版本上,升级到4.0之后,感觉有些变化.还得适应下. 1 build.host  代理消失了,成了SSH客户端登录.所以,Mac设备需要打开运行远程登录. 2 在Windows下的VS2015中,有些BUG.新建的工程项目,需要进行调试设备的配置.还有Target的设定. (注意:开发苹果的app需要证书,但是从XCode7.0之后,只要在XCode上进行苹果账号登录,就会允许进行使用模拟器进行开发调试!) 登录下XCode 中的账号,然后就可以在VS中新建项目

【Xamarin挖墙脚系列:使用Xamarin进行Hybrid应用开发】

官方地址:https://developer.xamarin.com/guides/cross-platform/advanced/razor_html_templates/ 使用Xamarin进行网页形式的本地APP开发,感觉有点不爽,不过为前端开发人员提供了开发APP的入口. 呈现引擎支持HTML  和ASP.NET MVC3的Razor引擎! Razor引擎是个好同志! 不过,创建Hybrid应用的框架不仅仅是Xamarin.大名鼎鼎的Phonegape的   Apache Cordova

【Xamarin挖墙脚系列:移动设备应用的开发周期及准则】

原文地址:https://developer.xamarin.com/guides/cross-platform/getting_started/introduction_to_mobile_sdlc/ 在移动设备软件的开发周期中,主要划分为: Inspiration, Design, Development, Stabilization, Deployment, and Maintenance几个阶段 1 发觉灵感创造---软件的目的 2 着手设计---画图纸 3 开发编码---实质性的操作

【Xamarin挖墙脚系列:Xamarin的终极破解步骤】

前面文章中,我们可以找到对应版本的补丁. Xamarin的 4.0.1717 版本,在补丁的地址中,有作者整理的全部的安装包.迅雷磁力贴: magnet:?xt=urn:btih:9FD298AA617B29E81B83E60DB7CE76D340FC56C7&tr=http%3A%2F%2Fbt2.rutracker.cc%2Fann%3Fmagnet 下载对应的版本,进行离线安装后,按照里面的补丁说明进行破解. Windows下的步骤: 1)Install Xamarin.Visual St

【Xamarin 挖墙脚系列:Xamarin SDK开源了................】

                                                              在前不久举行的 Build 2016 开发者大会上,微软宣布它收购的 Xamarin 将在不久后开源.现在,.NET 移动开发框架 Xamarin 正式开源,源代码采用 MIT 许可证,托管在 GitHub 上. Xamarin 开源的 SDK 和库包括了 Xamarin.iOS.Xamarin.Android.Xamarin.Forms 以及其它开源组件等等. 这些开源项

【Xamarin挖墙脚系列:Xamarin的核心】

Xamarin 包含两个商业产品 :Xamarin.IOS, Xamarin.Android.他们都是通过开源的基于.Net的Mono项目构建的.Mono是一个跨平台的.net 运行时,所有基于.net开发的应用,都可以运行在安装Mono的系统上. Mono可以部署在 Windows Linux  Unix MAC OSX... 在IOS开发中,Xamarin是通过AOT的编译方式,在程序发布时,进行预编译,并且直接将代码转化成为原生的程序集语言代码. 在Android中,Xamarin则是将代