1. Undo

    在电脑上,我们一般想要撤销之前的操作的话,是通过按下快捷键 Command + Z 来实现的。而在iOS中,其实有时候我们也需要在app中添加这样的Undo 功能,实现起来也没有很复杂。类似于 UITextField 和 UITextView 这样的类,已经实现了 Undo 功能。你只需要在app中的某个区域添加这个功能按钮。Undo ManagerUndo功能是由一个NSUndoManager实例来提供的,这个实例管理了包含所有可撤销操作的栈,还有一个包含了可重复操作的栈。当用户选择撤销...…

    iOS继续阅读

  2. iCloud

    iCloud一旦你的app通过UIDocument进行操作,那么iCloud服务会让你更满意。你只需要两步接入iCloud服务:注册使用iCloud的资格在苹果开发者网站,注册你的App ID ,勾选启用iCloud,并生成对应的provisioning profile文件,下载下来双击:然后在项目工程中,勾选使用iCloud服务:获取一个兼容iCloud的目录在你app启动时,在后台调用 NSFileManager 的 URLForUbiquityContainerIdentifier:...…

    iOS继续阅读

  3. 持久化

    沙箱iOS app中沙箱的概念不用多说了。在app沙箱中,包含了一些标准的目录。例如,Documents 目录:NSString* docs = [NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES) lastObject];如果你想拿到这个Documents目录的URL,可以:NSFileManager* fm = [NSFileManager new];NSError* e...…

    iOS继续阅读

  4. Core Text

    iOS中的文本绘制底层就是用Core Text来实现的。在iOS6 以前,使用Core Text来绘制不同样式的文本是唯一的选择,直到iOS6 添加了NSAttributedString类,封装了一些有用的方法,我们才能直接、方面地绘制自己想要的样式文本。但是仍然有些特殊的需求只有Core Text才能做到,Core Text是C语言写的框架,虽然有点难懂,但是并不复杂。其中一个很好的例子就是使用Core Text可以在字体家族中进行字体的转换,NSAttributedString无法做到...…

    iOS继续阅读

  5. Text

    Attributed Strings在 iOS 6以前,像UILabel,UITextView这些显示文字的控件仅仅支持单一的字体和大小,如果你想设置部分文字的特殊类型,你必须使用底层的技术,Core Text。为了显示这些特殊的文字效果,你可以使用CATextLayer或者用Core Text来绘制,这将是非常复杂的工作。从iOS 6开始,NSAttributedString集成了这些功能,你可以直接绘制不同类型的文字,或者可以随便地控制文字的显示。文字的属性是用字典来表示的:NSFon...…

    iOS继续阅读

  6. Controls

    UIActivityIndicatorViewself.activity.color = [UIColor yellowColor];self.activity.backgroundColor = [UIColor colorWithWhite:0.2 alpha:0.4];self.activity.layer.cornerRadius = 10;CGRect f = self.activity.bounds;f.size.width += 10;f.size.height += 10;...…

    iOS继续阅读

  7. 创建单例

    背景很多时候,我们在网上,或者开源项目中,看到类似下面这样创建一个单例:+(MyClass *)singleton { static MyClass *shared = nil; if(shared == nil) { shared = [[MyClass alloc] init]; } return shared;}但是,上面的代码在很多层面是错误的。首先,它不是线程安全的,当多个线程调用这个创建方法时,我们无法确保正确创建了一个实例,有时在苹果的官...…

    iOS继续阅读

  8. 不同行高的 table view cell

    本文翻译自:Table View Cells With Varying Row Heights更新:可以看看这篇文章,介绍在iOS8下如何实现自动调整大小的Cell。我发布了几篇关于处理动态类型的文章,其中包括根据字体大小的变化,改变表视图的行高度。但是这些都是假定在表视图中单元行高都是一样的。在这篇文章中,我将讲解,通过使用自动布局来设置不同的行高。在开始之前,我需要感谢Amy Worrall写的using auto layout to calculate table cell he...…

    iOS继续阅读

  9. 如何清除你的DNS缓存

    本文翻译自:How To Clear Your DNS Cache这个域名系统(DNS,Domain Name System)会把互联网上的主机域名解析成IP地址。DNS是互联网中,把人类易懂的主机域名(例如 example.com)转换成计算机可读的IP地址(例如192.168.0.1)的一个组件。DNS缓存则是存储着你最近访问过的位置(IP地址)。这通常会对提高访问速度有帮助,但有时候我们也会想清空这个缓存,从而重新整个缓存。Windows Vista / Windows 7: ...…

    iOS继续阅读

  10. 触摸传递 Touch Delivery

    下面是一个触摸传递到视图和手势识别的完整的标准过程: 当有一个新的触摸,该应用程序使用hit-testing命中测试(后面会讲)来确定被触摸的视图,这个视图就会永远与这个触摸对应。这个视图称为hit-test视图。如果想忽略一个视图,不处理触摸,可以在这个阶段设置userInteractionEnabled, hidden, 和 alpha属性。 每次触摸状态改变,该应用程序会调用自己的sendEvent:方法,反过来又会调用window的sendEvent:方法,...…

    iOS继续阅读