iOS 8与xcode6的变化 总结

今天给朋友解决问题的时候 发现iOS 8和xcode6 和 以前的版本有许多不同,大神的目前的总结如下:

http://www.cocoachina.com/ios/20141218/10681.html

项目路径坑

模拟器的路径从之前的~/Library/Application Support/iPhone Simulator移动到了~/Library/Developer/CoreSimulator/Devices/这相当的坑爹,之前运行用哪个模拟器直接选择这个模拟器文件夹进去就能找到项目

现在可好,Devices目录下没有标明模拟器的版本,图片上选中的对应的可能是iPhone 5s 7.1的

然后图片上的文件夹对应的应该是iPhone 4s 7.1 iPhone
4s 8.0
 iPhone 5s 7.1 iPhone
5s 8.0
.......,但是我不知道哪个对应哪个啊,好吧我要疯了


NSUserDefaults坑

通过NSUserDefaults储存在本地的数据,在模拟器删除APP、clean之后无法清空数据,我尝试删除iPhone 4s、iPhone 5s......里面的同一个项目,还是无解,这应该是个BUG,等苹果更新Xcode吧(我目前用的6.0)。但是真机没有这种情况(必须的啊)


UITableView坑

带有UITableView的界面如果到遇到以下警告

Warning once only: Detected a case where constraints ambiguously suggest a height of zero for a tableview cell‘s content view. We‘re considering the collapse unintentional and using standard height instead.

添加以下代码可解决

self.tableView.rowHeight = 44.0f;

autolayout坑

典型的UITabBarController作为根视图,然后点击其中一个页面button的时候push到一个列表页情况,结构如下图

如果在列表页需要隐藏tabbar,那么我一般都会在这个VC把bottombar设置为none以便能更好的进行约束布局,但是......在调试的时候你会发现进入列表页的瞬间底部会出现一个tabbar高度的视图。还是老老实实在就用默认的Inferred吧。


键盘弹不出

取消选择Connect
Hardware Keyboard


detailTextLabel无法显示

先来下面这段代码

- (void)viewDidLoad
{
    [super viewDidLoad];
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        self.array = @[@"测试"];
        [self.tableView reloadData];
    });
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return 1;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TradeRecordCell"
                                                            forIndexPath:indexPath];
    cell.detailTextLabel.text = _array[indexPath.row];
    return cell;
}

代码没什么问题,在iOS 7下,一秒之后cell的detailTextLabel就会显示测试两个字,但是在iOS 8却不行detailTextLabel显示为空。测试发现,当detailTextLabel的text一开始为空,iOS
8下运行就会把这个label的size设置(0, 0)从而不能正确显示,原因是这里cell.detailTextLabel.text = _array[indexPath.row];一开始数据就是空的,解决办法:

如果是空就不去设置值

    if (_array[indexPath.row]) {
        cell.detailTextLabel.text = _array[indexPath.row];
    }

或者

cell.detailTextLabel.text = _array[indexPath.row] ? : @" ";

pch文件不见了

现在Xcode 6创建的项目默认是不带pch文件的,当然了旧版本的项目是会保留的。那么如何添加pch文件?

* Command + N 然后在Other里面选择PCH File

* 在Build Settings里面找到Prefix Header

* 添加pch文件,规则是: 项目名/xxxxx.pch


UIAlertView的坑

UIAlertView显示无标题的长文本问题

UIAlertView *alterView = [[UIAlertView alloc] initWithTitle:nil message:@"远端Git仓库和标准的Git仓库有如下差别:一个标准的Git仓库包括了源代码和历史信息记录。我们可以直接在这个基础上修改代码,因为它已经包含了一个工作副本。" delegate:self cancelButtonTitle:@"知道了" otherButtonTitles:nil, nil];
[alterView show];

上面这段代码在iOS 8下显示的样子是这样的,内容完全顶到的顶部,文字还莫名其妙的加粗了

难道我会告诉你只要把title设置为@""就行了吗

 UIAlertView *alterView = [[UIAlertView alloc] initWithTitle:@"" message:@"远端Git仓库和标准的Git仓库有如下差别:一个标准的Git仓库包括了源代码和历史信息记录。我们可以直接在这个基础上修改代码,因为它已经包含了一个工作副本。" delegate:self cancelButtonTitle:@"知道了" otherButtonTitles:nil, nil];
[alterView show];

时间: 2024-10-17 09:03:52

iOS 8与xcode6的变化 总结的相关文章

ITMS-SERVICES://方式安装IPA在IOS 7.1中的变化

转:https://laoyur.com/?p=414 iOS7.1中,通过itms-services://方式安装ipa已经发生了改变,.plist文件必须是https://的,.ipa文件的链接则依然可以是http://的. 目前的解决方案大致有以下几种: Dropbox大法.把plist文件放到Dropbox上,生成一个https的下载链接. 用StarSSL之类的免费SSL服务获得SSL证书,来加密你的服务器. 没钱的穷屌丝可以自建CA,生成自签名SSL证书加密你的服务器,然后为你的CA

iOS开发之 Xcode6 添加xib文件,去掉storyboard的hello world应用

iOS开发之  Xcode6.1创建仅xib文件,无storyboard的hello world应用 由于Xcode6之后,默认创建storyboard而非xib文件,而作为初学,了解xib的加载原理很重要,所以,需要创建一个没有storyboard的项目 1. 创建一个新的工程 2. 选择仅一个视图的模板 选择 Single View Application , 点击Next 3. 填写项目信息 不需要选择core data,填好信息后,点击next,然后点击create 4. 删除story

对于刚接触iOS开发,Xcode6的部分疑惑

刚在Android转过来,部分的疑惑 1.在Android开发中一直使用的是代码控制的界面,刚刚到iOS中,特别是使用Xcode6,大部分是使用(Interface Builder)拖控件,不太习惯,主要是不太喜欢,所以移步此处:http://www.cocoachina.com/bbs/read.php?tid=131516 那么问题就来了,创建一个空的模版 2.Xcode6以前还有空模版,提供代码控制界面使用,现在的Xcode6已经不提供了(可能是Apple希望开发者如此?),所以自己创建一

iOS开发之 XCode6.0的iOS免证书真机测试方法(MAC及黑苹果均有效)

参考:http://mobile.51cto.com/iphone-455500.htm XCode6.0的iOS免证书真机测试方法(MAC及黑苹果均有效) 前提:设备已经越狱 目前在XCode上开发的iOS程序只能在模拟器Simulator中运行,如果要放到真机上测试,需要苹果官方认证的开发者账号,购买开发者证书iDP,99美金一年啊! 目前在XCode上开发的iOS程序只能在模拟器Simulator中运行,如果要放到真机上测试,需要苹果官方认证的开发者账号,购买开发者证书iDP,99美金一年

SafariServices,以及WebKit在iOS 9上的新变化

SFSafariViewController App可以选择UIWebView和WKWebView,展现Web内容.但是某些情况下,App既想使用类似于Safari的浏览器框架来打开网页,又不想自己重写地址栏工具栏,那么SFSafariViewController就是一个最好的选择,效果如图: SFSafariViewController是一个特殊的UIViewController,可在当前App使用Safari的UI框架展现Web内容,同时还能享受到Safari的一些便利特性,包括但不限于:

iOS开发之Xcode6之后不再自动创建Pch预编译文件

在Xcode6之前,创建一个新工程xcode会在Supporting files文件夹下面自动创建一个“工程名-Prefix.pch”文件,也是一个头文件,pch头文件的内容能被项目中的其他所有源文件共享和访问.是一个预编译文件. 首先说一下pch的作用: 1.存放一些全局的宏(整个项目中都用得上的宏) 2.用来包含一些全部的头文件(整个项目中都用得上的头文件) 3.能自动打开或者关闭日志输出功能 虽然用了很久的Xcode6但是项目是xcode5之前创建好的,所以一开始并没有发现缺少了这个pch

iOS开发之Xcode6之后不再自动创建Pch预编译文件,该如何解决这个问题?

在Xcode6之前,创建一个新工程xcode会在Supporting files文件夹下面自动创建一个“工程名-Prefix.pch”文件,也是一个头文件,pch头文件的内容能被项目中的其他所有源文件共享和访问.是一个预编译文件. 首先说一下pch的作用: 1.存放一些全局的宏(整个项目中都用得上的宏) 2.用来包含一些全部的头文件(整个项目中都用得上的头文件) 3.能自动打开或者关闭日志输出功能 (这个非常的好用,可以自定义NSLog函数,在调试阶段是需要这个函数的,但是在发布阶段就不需要这个

ios 8.4 Xcode6.4 设置LaunchImage图片

Step1 1.点击Image.xcassets 进入图片管理,然后右击,弹出"New Launch Image" 2.如图,右侧的勾选可以让你选择是否要对ipad,横屏,竖屏,以及低版本的ios系统做支持.这边我选了ios8.0,ios7.0,ios6没有做支持. Step2 将规定尺寸的图片从你的文件中拖动进到固定位置. 系统 尺寸 分辨率 ios8 Retina HD5.5 1242x2208   Retina HD4.7 750x1334   Landscape Retina

iOS开发之Xcode6 之手动添加Pch预编译文件

参考文档 http://blog.csdn.net/crazyzhang1990/article/details/44243343 红色部分为本人自己补充注意事项 在Xcode6之前,创建一个新工程xcode会在Supporting files文件夹下面自动创建一个“工程名-Prefix.pch”文件,也是一个头文件,pch头文件的内容能被项目中的其他所有源文件共享和访问.是一个预编译文件. 首先说一下pch的作用: 1.存放一些全局的宏(整个项目中都用得上的宏) 2.用来包含一些全部的头文件(