- 浏览: 79609 次
- 性别:
- 来自: 武汉
最新评论
-
woainike:
<div class="quote_title ...
performSelectorOnMainThread 和detachNewThreadSelector区别. -
hhb19900618:
兄弟 我没理解 _subThreed = [NSThread ...
performSelectorOnMainThread 和detachNewThreadSelector区别. -
woainike:
<div class="quote_title ...
performSelectorOnMainThread 和detachNewThreadSelector区别. -
hhb19900618:
你好 我想问一下: //下载结束,刷新 [self pe ...
performSelectorOnMainThread 和detachNewThreadSelector区别.
OS6正式版发布当天博主我就更新了,随后也更新了对应的XCode以及iOS SDK,更新到了4.5 (4G182)。然后更新原有4.4 iOS5 SDK的项目,目前最主要的发现就是iOS6对于app屏幕朝向支持以及自动旋屏时的处理方式的变动。
简而言之就是iOS6下的
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { return UIInterfaceOrientationIsLandscape(toInterfaceOrientation); }
这个不会再被调用,取而代之的是这俩个组合:
- (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; }
当然,为了保持对旧版本系统行为的兼容性,不要删掉不用的那个调用。另外还有一个这个preferred朝向也可以加上
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationLandscapeRight; }
当我替换完这俩个操作后尝试运行app,发现会报如下的异常:
Terminating app due to uncaught exception ‘UIApplicationInvalidInterfaceOrientation’, reason: ‘Supported orientations has no common orientation with the application, and shouldAutorotate is returning YES’
经查发现导致此异常的原因是app再info.plist中指定的屏幕朝向没有portrait,也就是只支持landscape横屏,但是app集成了Game Center应用,而Game Center触发的登录界面只支持竖屏显示(这点有开发帐号的朋友可以到苹果官方开发论坛上看下,有个苹果官方人员发的证实贴,由于现阶段的NDA就不转了),解决这个问题的方法就是再应用的delegate中加入如下回调:
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) return UIInterfaceOrientationMaskAll; else /* iphone */ return UIInterfaceOrientationMaskAllButUpsideDown; }
这样就可以再不改变info.plist中的设置的前提下,兼容gamecenter的竖屏登录问题。
顺带一提,对于Game Center排行等界面的旋屏朝向限制方法:
@implementation GKLeaderboardViewController(Landscape) - (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscapeRight|UIInterfaceOrientationMaskLandscapeLeft; } - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationLandscapeRight; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return UIInterfaceOrientationIsLandscape(interfaceOrientation); } @end
这个时候确实感到objective-c的category之方便啊,呵呵。
再有一个问题就是window的rootViewController问题,在iOS6下,必须通过setRootViewController指定根视图控制器,否则didFinishLaunchingWithOptions结束后会报必须指定根视图控制器的错误。网上看到有人提到在iOS6下addSubview的方法将不再起作用,而必须使用指定rootViewController的方式,而我实际测试时还发现了另外一个小问题,就是在切换view的时候,比如用MPMoviePlayerViewController播放intro视频,然后再切换到游戏OpenGL视图时的addSubView和removeFromSuperview的交替会出现一些奇怪的GL视图朝向错误问题,而且也找不到任何相关旋屏的log输出,最后发现只要是用了iOS6的SDK就必须调用setRootViewController,iOS6以前的系统还需要额外调用addSubview,这样就不会出现那种切换view后的诡异问题了,至少我目前找到的解决方法是这样,不知是否另有玄机?附上改后的根据系统版本号执行不同切换方式的简单代码:
if ([[UIDevice currentDevice].systemVersion floatValue]<6.0) { // 高兼容性的做法 [self.window setRootViewController:self.viewController]; [self.window addSubview:self.viewController.view]; } else { [self.window setRootViewController:self.viewController]; } [self.viewController.view setNeedsDisplay];
最后再爆料一个屏幕初始朝向的问题,我们知道,设定屏幕初始朝向的方法是再info.plist中指定Initial interface orientation项,而我发现无论怎么设置,横屏都只能以landscape-left的方式启动,就是按钮在左边那种,不管是升级的旧项目,还是新建的项目均是如此,不知是否有朋友也遇到了这个问题?
发表评论
-
个人网站建立了,后期数据移步www.rbbtsn0w.com
2013-09-04 23:00 1445个人网站建立了,后期数据移步www.rbbtsn0w.com -
UIRefreshControl for Tableview or TableViewController
2013-06-26 00:06 1265@interfaceViewController ( ... -
About search your address on MKMapView.
2013-06-09 22:47 1398When you have address it's a s ... -
针对UIBarButtonItem 下面的backbutton,一个很简单自定义方式。
2013-06-06 22:23 1269如果只需要用图片替换原来的back button,不需要里面 ... -
Custom your view and load in code. It's difference viewcontrolller.
2013-03-20 15:52 870You need to load it using t ... -
Xcode, git and .DS_Store
2012-11-28 21:23 1438On trying to merge two git b ... -
git for windows
2012-11-21 10:51 1191bulid 环境 scp 提交的命令 ... -
无聊的测试。release后还需要removeallobjects?
2012-11-14 16:42 1772#import <UIKit/UIKit.h> ... -
cookie观察
2012-10-24 12:51 831NSHTTPCookieStora ... -
Mac os 命令
2012-09-22 11:43 822打开终端输入命令:defaults writ ... -
DisMiss Keyboard,自定义的工具类
2012-09-17 17:15 1225// // Keyboard.h // Cust ... -
实效API
2012-08-02 12:04 1884iOS6 之后 presentModa ... -
APP 图片比例和名称规范 ,最新iPhone5比例
2012-07-25 21:10 2842从icon说起命名方法,举例 iPhone & ... -
The Icon and Default Images
2012-07-25 21:10 848The icon.png imag ... -
xcode的各个版本的下载地址
2012-03-29 10:51 1990现在进入apple的developer网站,默认只提供最 ... -
越狱开发
2012-03-23 18:07 0环境需要: Mac OS X 1 ... -
杂乱的草稿纸Cloud
2012-03-21 14:06 0NSAutoreleasePool *pool = [[ ... -
IP Address
2012-03-14 17:39 1007再来一篇,获取本地IP,三种方法: (1)在Day ... -
Copy Functions
2012-03-06 15:47 1265Copy Functions 在一般 ... -
UILabel 中Line Breaks属性.
2012-02-29 14:16 2010Clip Character Wrap Wor ...
相关推荐
"ios6系统图标原生"是指iOS 6操作系统中,苹果公司官方设计的一系列应用程序图标。这些图标通常遵循苹果的Human Interface Guidelines (HIG),确保一致性和用户体验的质量。在iOS 6中,这些图标的设计风格和色彩搭配...
对于兼容iOS6的项目,可能需要保留旧的图片命名方式,并且在代码中适当地选择加载。 7. UIAppearance:UIAppearance API允许全局设置控件的外观,如字体、颜色和边框等。利用这个API可以统一整个应用的视觉风格,...
标题中的“IOS6 常用ipa和iTunes10.5版本安装包”表明了这个压缩包包含的是适用于苹果iOS 6操作系统的ipa应用程序文件和iTunes 10.5版本的安装程序。ipa文件是苹果iOS设备上应用程序的标准打包格式,而iTunes则是...
"IOS6以上运营商补丁"是指针对iOS 6及以上版本的一个特定更新,它主要关注的是修复或优化通信中心(CommCenter)组件,以及改善与运营商相关的功能。 通信中心(CommCenter)是iOS内核中的一个关键组件,它处理所有...
通过阅读《iOS 6编程实战》,开发者不仅可以掌握iOS 6时代的开发技术,还能了解到当时的一些最佳实践,为后续的iOS版本升级和学习打下坚实的基础。虽然如今iOS已经更新到了更高的版本,但理解历史版本的知识有助于...
"IOS7呈现IOS6水滴刷新效果修正版本"这个项目聚焦于为iOS应用添加一个独特的刷新指示器,模仿了iOS 6中的水滴下落动画效果,并针对iOS 7及64位设备进行了优化。这种视觉反馈设计旨在提升用户体验,让用户在下拉刷新...
### iOS6编程核心知识点解析 ...通过上述知识点的详细解析,《iOS6编程》不仅为初学者提供了全面的理论知识,还通过丰富的实践案例帮助读者快速掌握iOS应用开发的核心技能,无论是对于个人项目还是专业发展都极具价值。
移动应用开发领域中,iOS和Android平台的设计与交互细节差异一直是开发人员需要关注的重点。随着两个平台在全球移动互联网市场的霸主地位,设计跨平台应用时,了解和遵循各自的设计规范,保证用户体验的一致性是至关...
7. **新API和框架**:iOS6还引入了其他新API,如Core Data的多线程支持,以及Core Image和AVFoundation的增强,使得图像处理和多媒体功能更为强大。 8. **Siri**:Siri在iOS6中支持更多的实用功能,如体育赛事查询...
iphone越狱 ios6很好用 ios6.1.6也可以 ios6系列越狱
《iOS 6 GUI PSD源文件在iPhone 5应用设计中的重要性及使用指南》 对于致力于iOS应用设计的专业人士来说,掌握最新的设计工具和技术是至关重要的。本文将深入探讨iPhone 5版iOS 6 GUI PSD源文件的重要性和使用方法...
本资源集中的标题和描述提到了iOS9.3.2和iOS10的SDK,以及它们与Xcode 5、6的兼容性,这对于那些希望在旧版本Xcode上开发或调试新版本iOS应用的开发者来说非常有价值。 首先,iOS9.3.2 SDK是Apple为开发针对iOS...
该主题包的核心在于其CSS样式和可能包含的一些JavaScript扩展,它们被设计用来模仿iOS6的界面元素,如按钮、滑块、对话框、工具提示等。jQuery UI的组件包括但不限于: 1. **Dialog(对话框)**:模拟iOS中的弹出...
9. **GameKit框架**:对于游戏开发者,GameKit提供了一些游戏相关的服务,如Game Center,用于排行榜、成就系统和多人游戏。 10. **测试与调试**:iOS6中Xcode的测试和调试工具也得到了增强,包括Instruments的使用...
《iOS6开发进阶与实战源码》是一个针对苹果iOS6平台深入学习和实践的资源集合,主要面向已经掌握基础iOS开发的开发者,旨在提升他们的技能并提供实战经验。这个资源包,名为"MoreiOS6Development-master",包含了...
"teehanlax - iOS 6 - iPhone.psd"是一个典型的例子,它是由知名设计工作室Teehan+Lax提供的,这个文件可能包含了iOS 6时期iPhone应用的标准界面模板,包括导航栏、工具栏、图标以及其他交互元素的可定制设计层。...
《初识iOS 6开发:探索iOS SDK》是针对苹果移动平台开发的一本入门级教程,旨在引导读者深入了解iOS开发环境和工具,掌握Objective-C语言基础,并熟悉Apple的开发框架。这本书面向的是对iOS编程感兴趣的初学者,通过...
《一步一步学习 iOS 6 编程》是一本针对初学者的iOS开发教程,特别适合...总的来说,《一步一步学习 iOS 6 编程》是一本全面覆盖iOS开发基础知识的教程,对于想要踏入iOS开发领域的初学者来说,是一份非常宝贵的资源。