文档章节

旧工程适配iOS 6和iPhone 5的一些故事

Orange1
 Orange1
发布于 2012/10/30 10:08
字数 1148
阅读 454
收藏 1

苹果每发布一个系统,都够开发者忙活一阵的,更新xcode适配新系统:像iOS4支持Retina需要@2x的图;像iOS5不支持udid;像现在的iOS6和iPhone5要面对的下面的一堆问题。

1.添加Retina 4 launch image,运行工程的时候会主动提示你。

这时候直接点Add就好了。会默认添加一张Default-568h@2x.png的黑图:

不添加的话,程序运行起来会上下有黑边儿。

添加完以后的效果

这个地方再啰嗦两句:当透明第一次在群里说要添加这么一张图的时候,我的第一反应是:那不是程序启动的时候会有一张黑图么?而我的程序是不需要启动图的。而当自已添加这张图的时候才发现,这个担心是多余的。估计苹果自已做了什么优化,判断出来是黑图的时候就直接给跳过了。

2.Group Table View Background Color is Deprecated in iOS 6.0


在使用背景色的时候,我最喜欢用的一个系统自带的颜色就是:”Group Table View Background Color”。现在既然这个颜色消失了,换个别的颜色就好喽。

3.关于多个Target

我们知道添加图片的时候,会直接添加到工具里,这时候如果有多个Target的时候,直接将Default-568h@2x.png文件,拖拽到相应的”Copy Bundle Resources”里就好了。

再有要注意的就是多个Target在模拟器运行的时候,现在不像原来那么方便,直接切换配置文件就可以运行了。需要在测试不同Target表示的时候,除了切换配置文件还需要清空模拟器,不然不好使哟~

4.xcode4.5不再支持armv6即:iOS4.3.3以下的系统.

不被支持的硬件设备包括:iPod 2nd gen, iPhone 3G 或更老的iPhone
例如我打包时的错误提示就是:

1
2
warning: iOS deployment targets lower than 4.3 are not supported (current IPHONEOS_DEPLOYMENT_TARGET = "4.0", ARCHS = "armv7").
(null):  iPhone/iPod Touch: application executable is missing a required architecture.  At least one of the following architecture(s) must be present: armv6 (-19033)

因为喜欢用Block,所以我开发的东东,一般最低都支持iOS4.0,看来是苹果逼着开发者和用户升级啊。

5.奉上一段判断iPhone的代码

1
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)

用时候直接

1
if (iPhone5) ooxx

就可以了。
另外,如果代码写界面的话,在iPhone5下View的高是568哟~

6.关于xib自适应的问题

默认的话,如果你的界面上包含scrollview/TableView的话,这个界面基本上是不用改的,因为中间部分会自动拉伸。如果不包含这两个全屏的控件的话,怕是要自已再添加一个专门针对iPhone5的xib了。办法很简单,新建一个xib文件,将里面view的size设置成Retina 4 Full Screen就可以了。上面已经提到怎么判断iPhone5了,怎样读取不同的xib文件不用上代码了吧?

7.关于屏幕旋转

(iOS5的时候就出过一次状况,这次又来)
要深入理解这个问题,还需要您自已亲自做一些实验,iOS6取消了一个api,增加了两个api,但是这一去一加满足不了我的情况:应用在所有的界面都是竖屏,只在一个屏幕是横屏。就这一个情况要实现费了我半天的功夫。只说一下我最后怎么实现的。
首先:这横屏的xib里面的view就是横的
其次:屏幕适应只支持横屏

1
2
3
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
  return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}

第三:在这个view是present出来的
第四:viewDidLoad里隐藏状态栏

1
2
3
4
5
6
- (void)viewDidLoad{
  if (IOSSystemVersion >= 5.0) {
    //5.0及以后,不整这个,界面错位 整这个带动画的话,容易看到一个白头
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
  }
}

第五:viewWillAppear自已将view旋转90度

1
2
3
4
5
6
7
8
9
10
11
12
13
- (void)viewWillAppear:(BOOL)animated{
  [super viewWillAppear:animated];
  [UIView animateWithDuration:0.0f
                   animations:^{
                     [self.view setTransform: CGAffineTransformMakeRotation(M_PI / 2)];
                     if (iPhone5) {
                       self.view.frame = CGRectMake(0, 0, 568, 320);
                     }
                     else{
                       self.view.frame = CGRectMake(0, 0, 480, 320);
                     }
                   }];
}

转载请注明:dApps开发者 » 旧工程适配iOS 6和iPhone 5的一些故事

本文转载自:http://www.dapps.net/dev/iphone/old-project-ios-6-iphone-5-1.html

Orange1
粉丝 9
博文 39
码字总数 21934
作品 0
苏州
程序员
私信 提问
iOS 的 APP 如何适应 iPhone 5s/6/6Plus 三种屏幕的尺寸?

2014-10-21 19:03| 发布者: 鸟哥笔记-馒头 |来自: 知乎 黄兢成 初代iPhone 2007年,初代iPhone发布,屏幕的宽高是 320 x 480 像素。下文也是按照宽度,高度的顺序排列。这个分辨率一直到iPh...

andyhe91
2014/12/31
51K
1
升级 到xcode4.5后,three20 不能使用armv7s编译

解决办法:打开three20里的每一个子项目,把build settings的Architectures 都改成armv7,armv7s,所有子项目的都改过来了,就能通过armv7编译了 cocos2d在ios6 sdk下黑屏不显示的修改 //把 ...

慎道
2012/09/25
586
0
iOS开发值苹果手机各种尺寸详细表以及iPhoneX、iPhoneXS、iPhoneXR、iPhoneXSMax屏幕适配

iPhone设备 物理分辨率是硬件所支持的,逻辑分辨率是软件可以达到的。 如图所示: Tips: 最终发现iPhone5和6一个小秘密,它们的比例是不变的 iPod设备

坤宇
2019/03/28
0
0
苹果 WWDC 2018:iOS 12 和 macOS Mojave 正式推出

北京时间 6 月 5 日凌晨,一年一度的苹果 WWDC 开发者大会在美国圣何塞召开。本次大会一切都是关于软件的,大会上,苹果正式推出了新版 iPhone 操作系统 iOS 12,并宣布了新版 macOS 桌面系统...

局长
2018/06/05
3.9K
17
iOS12、iOS11、iOS10、iOS9常见适配

一、iOS12(Xcode10) 1.1、升级Xcode10后项目报错 不允许多个info.plist Xcode10是默认选中的最新的New Build System(Default),在这个编译系统的环境下,不允许多个info.plist 解决办法一:...

walking_yxf
2019/02/11
48
0

没有更多内容

加载失败,请刷新页面

加载更多

在JavaScript中将数字转换为字符串的最佳方法是什么?

将数字转换为字符串的“最佳”方法是什么(就速度优势,清晰度优势,内存优势等而言)? 一些例子: String(n) n.toString() ""+n n+"" #1楼 如果需要将结果格式设置为特定的小数位数 (例如...

javail
22分钟前
111
0
51单片机中断学习

一、中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原...

demyar
23分钟前
97
0
创龙TI KeyStone C66x多核定点/浮点DSP TMS320C665x 的拓展IO信号、FMC接口

广州创龙结合TI KeyStone系列多核架构TMS320C665x及Xilinx Artix-7系列FPGA设计的TL665xF-EasyEVM开发板是一款DSP+FPGA高速大数据采集处理平台,其底板采用沉金无铅工艺的6层板设计,适用于高...

Tronlong创龙
24分钟前
90
0
理解虚拟网络

概念 TUN/TAP,veth

认真即可
31分钟前
162
0
聊聊artemis的ServerConnectionLifeCycleListener

序 本文主要研究一下artemis的ServerConnectionLifeCycleListener BaseConnectionLifeCycleListener activemq-artemis-2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artem......

go4it
32分钟前
111
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部