天天品尝iOS7甜点 :: Day 2 :: Asset Catalog

这篇文章是天天品尝iOS7甜点系列的一部分,你可以查看完整的系列目录:天天品尝iOS7甜点


介绍

过去,我们在Xcode中会花费很多的时间来管理我们的图像资产,我们不确定需要retina版本的图片,或者不同icon版本的图标。在以前这些图像都没有很多的关联管理,但是在Xcode5和iOS7中,Apple已经介绍了一个新的概念Asset Catalogs(资产分类),它可以管理物理图像文件和这些文件的上下文信息。

完成的代码已经在github可供下载使用:github.com/ShinobiControls/iOS7-day-by-day

Asset Catalog - 资产分类

一个资产分类的目录由一些图像的集合,app图标和app启动页构成。当我们在Xcode5中新建一个工程的时候,Xcode会自动为我们创建一个名为Images的资产分类文件夹,并且它会事先准备好一些app图标和app启动页,同时Xcode提供旧应用程序迁移到使用资产目录。

在iOS7中的目录中会编译成一个二进制的文件,来减少发布应用程序的大小。

天天品尝iOS7甜点 :: Day 1 :: NSURLSession

这篇文章是天天品尝iOS7甜点系列的一部分,你可以查看完整的系列目录:天天品尝iOS7甜点


在过去的网络环境中我们都是用全局的状态NSURLConnection来管理cookies和authentication, 因此会出现两个不同的连接互相竞争共享的设置,NSURLSession着重就是解决这些问题和其他的一些问题的。

伴随着这个指南,我们讨论三个不同的下载情形.这篇文章不会描述所有的项目,只是突出一些与NSURLSession API相关的内容。

完成的代码已经在github可供下载使用:github.com/ShinobiControls/iOS7-day-by-day

简单下载

NSURLSession代表了多重连接所有相关的状态,在以前是一个共享的全局状态。会话对象通过一个配置对象的工厂方法进行创建.

有3中可能的session:

  1. 默认的,进程内会话
  2. 短暂的(内存内),进程内会话
  3. 后台会话

为了一个简单的下载我们将会使用一个默认的会话:

1
NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];

一旦一个配置的对象已经被创建,则它具有很多的属性可以控制它的行为。例如:它可以设置TLS安全的访问级别,不管cookies是否允许或者超时,其中两个令人关注的属性是allowsCellularAccessdiscretionary.前者指定设备在蜂窝网络下面是否允许进行网络会话。设置一个会话,可以在合适的时间内允许操作系统进行网络的访问,(如WIKI已经连接上),并且让设备更加的节能。最主要的意图就是用在后台进程会话中,设置默认值为true.

天天品尝iOS7甜点 :: Day 0 :: UIKit Dynamics

这篇文章是天天品尝iOS7甜点系列的一部分,你可以查看完整的系列目录:天天品尝iOS7甜点


伴随着介绍苹果的iOS7,将会使你清晰的认清设备和现实世界的相互作用,UIKit Dynamics就是众多新API中的一个, UIKit Dyanmics是UIKit下的一个二维的物理引擎,在今天的文章里面,我们就介绍一下UIKit Dynamics并且构建一个牛顿模拟重力实验。

本章的实例程序能够在github上面进行访问,访问地址:github.com/ShinobiControls/iOS7-day-by-day

物理世界

为了模拟现实世界中的物理效果,我们使用UIDynamicBehavior的子类来确定对象(这些对象都实现了UIDynamicItem协议)的不同行为。一些行为的例子包含:重力作用、碰撞作用和弹性作用。当然了实现了UIDynamicItem的对象也可以创建自己独特的行为,极其重要的UIView就已经这么做了。UIDynamicBehavior对象可以融合在一起生成一个新的综合行为的对象,它包含所有的行为对于一个给定的对象或一组对象。

一旦我们指定了动态对象的行为,我们就可以为他们提供一个UIDynamicAnimator实例(也就是物理引擎自身).它就可以自己运行根据不同的行为来计算不同对象间的相互影响。下图用来展示UIKit Dynamics世界中的概念图:

解决cocoapods在64位iOS7系统下面的警告问题

现在编写iOS程序,引用到第三方包,运用cocoapods进行包管理已经成为了一个趋势了,但是最近运用cocoapods构建的应用却在64bit的iOS7系统中有警告的产生,具体的警告信息如下面所示:

Pods was rejected as an implicit dependency for ‘libPods.a’ because its architectures ‘i386’ didn’t contain all required architectures ‘x86_64’

运用UIView中的transform属性实现动画效果

在iOS的开发过程中,肯定会用到动画效果,要实现动画效果可以使用下面的各种方法搞定,

  • 运用UIView 中的一系列的animation方法
  • 运用Core Animation进行操作
  • 运用UIView中的transform属性实现动画效果

今天就说说最后一种方法的实现,而另外的两种方法已经在上一篇文章中有所介绍了。

下面展示把 BViewController 动画加载到 AViewController中。

假设在AViewController中包含了一个button按钮,实现了一个push方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- (IBAction)push:(id)sender {
BViewController *bViewController = [[BViewController alloc] init];
[bViewController willMoveToParentViewController:self];
[self addChildViewController:bViewController];
bViewController.view.backgroundColor = [UIColor redColor];
bViewController.view.frame = self.view.bounds;
[self.view addSubview:bViewController.view];
bViewController.view.transform = CGAffineTransformMakeTranslation(self.view.bounds.size.width, 0);

[UIView animateWithDuration:2
animations:^{
bViewController.view.transform = CGAffineTransformIdentity;
} completion:^(BOOL finished) {
[bViewController didMoveToParentViewController:self];
}];

}

10.9 DP版本(13A598)的Mac升级为正式的10.9(13A603)

伴随着Mavericks的免费发布,各路的Mac君们,开始纷纷的升级了,当然我也按耐不住内心的冲动啊,其实我已经用DP版的10.9好一段时间了,果然在AppStore里面升级系统的东西,终于刷刷刷几个G的东西更新好了,重启电脑,希望一睹正式版系统的风采,打开电脑看了一下版本号,顿时傻了,版本号怎么还是13A598呢,最新的应该是13A603啊,看来要重新在AppStore里面下载整个安装包了,于是又屁颠屁颠的去下载,但是不管怎么点击”Download”,然后弹出框点击”continue”之后,AppStore死活不去下载最新的系统。

UITableview reloadData Animation 动画效果

运用到UITableview进行重新加载数据的时候需要看到一些动态的切换效果,在UITableview内置的有很多reload方法,可以实现一部分效果,但是最近我在运用reloadSections的时候去发现在iOS6中不能够达到我期望的效果,但是在iOS7中一切运行OK。

为了解决动画的问题,就运用到UIView的一些动画方法来实现view的动画,运用到UITableview中,可以是之呈现类似的动画。

1
2
3
4
5
6
7
8
[UIView transitionWithView:m_tableView
duration:.5f
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
[m_tableView reloadData];
} completion:^(BOOL finished) {

}];
,