厌倦了使用位图在xcode的Assets.xcassets内,由于麻烦,包括以下的麻烦: 找图 图须要分尺寸 须要操做员相似工做去管理 而后,如今有了字体图标,就方便多了: 比较成熟的几套库,用名字就能够查 矢量图,尺寸无极缩放,想要多大都行 都在代码和字体文件内,不须要在工程…
node
Archive 想把对象序列化到文件,能够首先令此对象符合 NSCoding 协议,而后使用归档类完成序列化。 以下案例,能够把对象 User 序列化到文件内: import UIKit @UIApplicationMain class AppDelegate: UIResponder…
git
广告 Swift iOS开发小书 ,帮你快速上手开发 http://www.ituring.com.cn/boo... 正文 你建立了一个迷幻的View,想要向全世界共享它。怎么办?cocoapods能够帮忙。 ##建立一个工程,其中有你须要分享的代码 首先,咱们建立这样的…
web
TableViewCell提供了种种定制的可能,包括textLabel,detailLabel,各类访问附件等。可是须要死记硬背,何须呢,反正一个继承了UITableViewCell的子类,而后在其内加入本身的定制View其实并不复杂,而且使用了一样的加入subView的方案。因…
sql
SVG文件是矢量图标准之一,特色是能够缩放,而且能够用能够阅读的源代码的方式(而不是二进制)来存储图形信息。好比以下文件就是一个svg文件: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 350 100"> <defs>…
数据库
广告 Swift iOS开发小书 ,帮你快速上手开发 http://epub.ituring.com.cn/946 正文 使用UIWebView装载一个网页后,可能须要提取其内的信息,比较好的方法是使用JavaScript。方法UIWebView.stringByEvaluati…
json
如何经过经过纯粹的代码,而不依赖于Xcode的StoryBoard,来完成一个App? 首先作些操做性的工做,具体过程是这样的: 打开xcode 建立一个Single View App Xcode会进入主要编辑界面。此时,咱们打开AppDelegate.swift文件而后覆盖源…
swift
CocoaPods是一个iOS项目的依赖管理器,使用它可让导入第三方库和处理依赖关系变得简单。 出于测试和验证的目的,这里会建立一个Swift工程,并采用CocoaPods导入第三方HTTP库alamofire。 准备CocoaPods CocoaPods须要系统内已经安装了…
设计模式
StackView 有不少布局可使用横向布局和纵向布局来组合完成,此种状况下,可使用 UIStackView 来简化建立布局。 假设咱们想要横向布局 3 个标签,标签之间有边距的话,能够这样: import UIKit @UIApplicationMain class AppDel…
api
在解决一个遗产代码的过程当中,我但愿对UIAlertView稍做封装,以便从巨大的ViewController内分离出特定的AlertView的代码,我这样作的: import UIKit @UIApplicationMain class AppDelegate: UIRespon…
xcode
咱们经常看到简单平实的文本显示,而后确实能够经过 RichText 来完成丰富文本的外观,加强界面的表达力。 UILabel 等组件,除了 text 属性外,还有 attributedText 属性,经过构建 NSAttributedString 的实例,并赋值给此属性,就能够设置 RichTex…
使用动态文字填充UITableViewCell内容时,须要计算文字占用高度,以便告知UITableViewCell的行高。使用YYText的YYTextLayout能够帮助作到这点。 以下案例,简单封装了YYTextLayout,并经过两个案例调用,演示它的作法: import…
CocoaPods是iOS最经常使用最有名的框架依赖管理工具。可是使用过程也是凭空的一波三折的,because I Love China。 首先你须要ruby环境。 $ruby -v ruby 2.0.0p648 (2015-12-16 revision 53162) [unive…
广告 Swift iOS开发小书 ,帮你快速上手开发 http://www.ituring.com.cn/boo... 正文 使用SnapKit布局固然不错,可是我以为Cartography更好,由于能够写出更加规整的布局代码。表达式老是比起链式函数容易阅读。 依然是布局三…
2015年,我也去看了下objc,第一感受很很差,C语言和objc的扩展在一块儿,特别混乱,当时感受: 都是函数,C的函数和objc的函数建立和使用差异很大,而且混合在一块儿 objc函数带着参数标签的,函数长的受不了 即便是第一步最小的app,也得了解设计模式,它一开始就出场,叫作…
这篇文章大概是目前你能够看到的最简单的本地化教程。 广告 Swift iOS开发小书 ,帮你快速上手开发 http://epub.ituring.com.cn/946 目标 本地化的意义,在于iOS切换不一样语言时,App能够随同改变,用指定的语言显示应用。iOS提供了一套用来国际…
广告 Swift iOS开发小书 ,帮你快速上手开发 http://www.ituring.com.cn/boo... 正文 一般给UILabel设置文本,咱们都是设置属性UILabel.text。这意味着显示的文本是单一的,整个文本只能有一种一样的文本效果。而另一个属性…
在iOS 7后,UIView新增长了一个tintColor属性,这个属性表示的是“色调”,一旦设置颜色给它,那么以此视图为根视图的整个视图层次结构都会被修改颜色。从而能够没必要一一赋值就能够在视图体系内获得一致的颜色体系。 以下代码当点击RUN按钮时,整个以self.view为根视…
AutoLayout 典型的,加入一个子视图的作法就是建立实例,指定位置,而后把它加入到视图里面来。在指定位置的代码处,通常就是设置 frame 属性便可,就像这样: import UIKit @UIApplicationMain class AppDelegate: UIResp…
iOS默认提供的布局技术强大而愚蠢。幸亏有一个封装的包SnapKit,可让布局变得容易阅读和修改。 假设要在一个UIViewController上布局两个label,要求是: 第一个label的xy距离父视图为5,100 第二个label 的x距离第一个label为10,高度…
UITableView功能强大,可是使用delegate设计模式的DataSource真的很不舒服。好比说: 一堆冗长的函数签名 只能拷贝,错一点都没法执行的,也不会提示你不对 冗长的函数签名是这样的: func numberOfSections(in: UITableView…
可使用AVFoundation框架来启动相机扫描二维码,把一个二维码转换为一个字符串。 以下应用,进入首页看到一个按钮和一个标签。点按钮的话,会触发一次扫描,把扫描到的二维码转换为字符串后,会显示在标签内。代码以下: import UIKit @UIApplicationMai…
访问HTTPS服务器时,可使用自签名证书的、在本地的https服务器,对于调试应用是很是方便的。 Apple已经在iOS 9版本要求必须使用https。若是https服务器是CA签署的证书,那么一路绿灯,若是是自签名证书,就须要作两个额外的工做: 在info.plist内加入…
对TableView,下拉刷新新的数据是很方便的。iOS内置有一个下拉刷新控件UIRefreshControl,虽然不能作上拉刷新,可是由于使用简单,倒也值得介绍。 以下代码,使用TableView加载OS列表,每次下拉,都模拟刷新一条新的OS项目: import UIKit @…
我阅读一个开源代码的过程当中,经常发现有这样的结构: var textLabel:UILabel = { let label = UILabel() label.backgroundColor = .red return label }()功能可以编译,可以运行,所以语法固然是对的…
webview装入的网页,经常有幅面比较的图,这些图会超出手机的宽度,所以致使显示不完整。 好比以下案例,加入了两个图片,大小分别为: 650x300 150x150在iPhone SE的模拟器下,默认状况下,前一张图会在宽度上超出,后一张能够显示完整。 import UIKit…
KVO是Key Value Observer的缩写,能够用于监视一个对象的属性值变化,而后执行一个代码块(块、函数、闭包等)。Facebook开源了一个KVO框架,KVOController。 这个案例使用KVOController,用于App主题改变通知。经过KVO监视主题的…
咱们经常会须要把多个类耦合在一块儿以便共同完成一个或者一组功能。可是同时也意味着其中单独的类由于依赖了其余的类,当被转移到其中工程中就会没法没法编译经过,更加谈不上运行了。好比以下的案例的几个类就是彻底的胶合在一块儿: import UIKit @UIApplicationMain…
Cell高度自适应的问题真多。如今,若是内部有webView,内容动态装入,大小也是各不相同的,而且高度必须根据内容,而不是view自己的高度来适应,怎么办呢?特别是若是有多个webView的状况下。 这样就能够了: import UIKit @UIApplicationMain…
框架 MJRefresh 提供了上拉刷新或者下拉刷新,很是的喜闻乐见。 须要使用 pod: target 'Swift-MJrefresh' do use_frameworks! # Pods for Swift-MJrefresh pod 'MJRefresh' end 记得去执行命…
日期时间经常须要以字符串形式打包到JSON内,经常使用的字符串格式为ISO8601,格式卡起来是这样的: "2016-06-05T16:56:57.019+01:00"解析它的关键,是使用DateFormater的时候,写好格式化字符串,内容为: dateFormatter.date…
根据Cell内的内容,动态调整Cell高度,是经常使用的技术。在iOS 8 或者以上的版本内,这个技术再也不须要本身计算行高,而是变得简单无比。 以下案例,假设一个Cell内有两个Label,其中一个单行,第二个多行,根据第二个Label的内容的不一样,高度也会不一样,这个高度的变大,会导…
以下为官方文档的定义,可是建议你忽略它,搞懂了自动闭包再来看才容易懂:) 自动闭包是一种自动建立的闭包,用于包装传递给函数做为参数的表达式。这种闭包不接受任何参数,当它被调 用的时候,会返回被包装在其中的表达式的值。这种便利语法让你可以省略闭包的花括号,用一个普通的表达式 来代替…
Swift支持代码按物理模块分割组织,分而治之。其中的一个作法就是在你的工程中使用framework。 本文建立一个最简单framework。 首先建立一个framework工程。步骤为: 建立工程 选择iOS | Framework & Library | Cocoa Tou…
iOS的模糊化,会让界面很炫酷,用了不能停。本案例使用了FXBlurView,对图片进行模糊处理。 使用Pod文件: target 'five' do use_frameworks! pod 'FXBlurView', '~> 1.6.4' end而后执行pod install…
使用 URLSession 能够访问 https 服务器。为了测试方便,省下本身编写 https 服务器的麻烦,可使用一个网络服务叫作 httpbin.org/ip, 当访问子 URL 时,它会返回一个 json,格式为: {origin = "221.237.156.243";} 访问 http…
可使用 sqlite 做为关系数据库来存储 iOS 本地数据。这意味着,经过 sql 语言方便的作数据的增删改查。 sqlite 自己提供了 C 语言的 API,使用 Swift 访问须要 建立一个桥接文件,引入 C API,访问 SQLite 数据库须要使用 SQLite 官方提供的 C 语言风格的 API,因此…
plist plist是一个XML的子集,使用UTF-8编码的文本文件,它的根节点是一个字典,内容由多个主键和值构成。经常用来存储App的配置信息。 能够直接使用NSDictionary类直接存储它的内容到plist内,好比这样: import UIKit @UIApplica…
cnodejs容许使用它提供的api来开发客户端。而且提供了文档。为了测试和验证api,可使用curl命令来作此事。有了这些命令集合,开发和研究api变得更加容易。以下就是这些能够执行的文档。 发布主题: curl --data "tab=dev&title=title&con…
典型的前台后台的交互操做,几乎都是这样的: 访问后台服务API 而后解析它返回的JSON 使用Alamofire,它的扩展AlamofireObjectMapper能够把HTTP访问得到的结果转换为json对象,使用ObjectMapper能够把json对象和swift对象作一个…
广告 Swift iOS 小书 http://www.ituring.com.cn/boo... 正文 编辑代码时,不当心弄错了,却意外的发现,这样的代码是能够编译经过和运行的: @UIApplicationMain class AppDelegate: UIRespon…
广告 Swift iOS开发小书 ,帮你快速上手开发 http://www.ituring.com.cn/boo... 正文 第三方库YYText能够完成富文本的输入,若是须要建立相似微博@同样的输入UI,可使用它的YYTextView组件。具体说: 当内容中有@打头的文…
广告 Swift iOS开发小书 ,帮你快速上手开发 http://www.ituring.com.cn/boo... 正文 KeyChain提供了加密存储敏感信息的方法。所谓的敏感信息,不外是密码,信用卡号等。若是一个对象含有敏感信息,也能够把整个对象序列化为Data,然…
广告 Swift iOS开发小书 ,帮你快速上手开发 http://www.ituring.com.cn/boo... 正文 每次加载WebView内容,若是图片能够缓存的话,速度就会很是快。默认状况下,WebView本身来加载图片,缓存的策略也是本身定的。如想要本身缓存的…
老版本的Swift(小于2.2),想要给Button一个事件的话,须要用到Selector函数,像是这样: import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate …
extension能够为类添加新的方法,可是若是想要添加数据成员的话就会被阻止,好比以下代码: extension Foo { var _title: String? var title: String? { get { return _title } set { _title …
有时候,须要动态调整UITableView的Cell高度,好比内部有一个TextView,内容由用户决定,可长可短的状况下,确定是但愿Cell和TextView能够展现所有内容,所以也须要Cell高度也跟着同步越高了。 以下代码,展现一个长度变化的TextView,当内容变化时…
类NotificationCenter提供了一种轻耦合的消息传递机制。能够发起一个通知,在多处监听此通知。好比说一个App的主题样式被修改,就能够经过此类来通知多个相关UI,作响应的处理。 以下案例展现了这种可能: import UIKit @UIApplicationMain …
View 视图类 UIView 定义了一个矩形区域,而且管理此用户界面内的交互。视图能够管理子视图,所有子视图和自身视图一块儿,构成一个层次化的视图树。 咱们完成一个案例,代码能够建立两个 50 见方的矩形,它们并排在一块儿,而且还有第三个视图,它嵌入在第二个视图内。三个视图的背景色分别为…
类 UIViewController,它被称为视图控制器,被用来装入和释放视图、管理视图交互、而且和其余视图控制器一块儿协做完成总体的 App 界面。为了术语一致,后文会直接使用它的英文名:View Controller。 View Controller 管理一个视图层级体系。好比在一个…
有时候,须要建立一个https服务器,以便测试使用。使用node.js完成此项工做仍是比较简单的。另外,为了能够建立https,须要openssl工具栈。 首先建立证书: openssl genrsa -out key.pem openssl req -new -key key…
有时候发现当前代码修改的不对了,想要回溯到前些版本,屡次checkout查找合适版本时,会发现当前处于这样的状态; (HEAD detached from REVISION-ID)若是此时作了修改,那么可使用以下命令合并修改到主分支: git branch temp git c…
使用闭包,有两种状况,一种是在调用者完成前闭包就被执行完成了。还有一种则相反:调用函数完成了,可是闭包尚未被调用或者没有被完成。后者被称为逃逸闭包。 全部网络请求的函数,在完成调用请求后,直到响应返回,闭包才会被调用,因此这个类型的网络请求函数内等待响应的闭包就是逃逸闭包。这…
Swift 是自动管理内存的。这意味着,你不须要主动释放内存。 好比 Foo 内包含的 Bar,能够随同 Foo 一块儿被释放: import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDele…
可使用DrawerController框架实现抽屉的效果。看起来仍是蛮帅气的。 须要作的就是一个DrawerController,3个ViewController。3个ViewController分别用于左侧的抽屉,当前的抽屉,右侧的抽屉。DrawerController用来…