克解放双手的流水线自动化软件

延伸阅读在尽下方

iOS 实战开发课程笔记

节奏:能解放双手的流水线自动化软件

本贴旨在作针对极客班 《iOS
开发实战》第五期期课程视频重新学习的笔记。
对象是起家一个比较完好的 iOS
开发知识点框架和便捷手册,我怀念寻找工作……所以,打结实点基础,你们了解的。
本着各个内容的详实研究会在攻读了后拉开新贴深入探索。
简书我未清楚怎么补偿加目录,所以自己觉得可能在网易上看会重复清晰点……篇幅过长。
眼看是自家之网易博客账号,欢迎各位同学吐槽。
http://blog.csdn.net/mubinhuang/article/details/50649650
该贴仍以不断完善中。

老王一直发个观点,在目前的互联网环境下,如果您的某款工具用着不爽了,那
要么你无找到科学的采取方法,要么生重好的家伙得以代替她。
所以我就花费了片时日整理了就要节目,为大家介绍几迟迟能增进我们工作效率的软件,将我们由机械无聊的工作被抽身出来,节省我们片年华,去做一些更有意义的事务。

0 导论


呃,我将会晤以操作系统的归类,电脑和手机,和打爱到难之一一来挨家挨户简单介绍一下,当然尤为难学的家伙,也愈加能增进我们的工作效率。

0.1 技术支持

先期说在我们经常因此的windows系统上有啊好增进工作效率的软件,我要推荐两慢慢悠悠第一慢慢悠悠是一个国产的软件,叫按键精灵,这个相信广大情侣呢都用过了,老王以跟windows平台上由之炽热之早晚,曾经为此过一段时间,确实很好用。咱们简单介绍一下外的工作原理啊,
她最主要有少种工作方式,分别是录制你的鼠标和键盘的操作步骤,然后实施你的录制过程。第二个就是编一些下面本来就你的干活,当然这剧本并无是程序员的那种代码,简单看一下异的学科就能够看懂。
我们得以靠这软件,通过录制鼠标和键盘动作的办法,来好有简的操作,如果你玩的十分成熟,你当然好于他也公开更多。为了方便讲解,我偏偏拿一个怪简短的面貌举例,比如我们上班时,要开辟oa系统以及收件箱,并且使翻开和恢复邮件,如果您当每天都召开,非常无趣,我们就是得经按键精灵来简化我们的手续,点击软件的录制动作按钮之后,软件就开始记录我们的动作,比如双击OA软件的图标、输入账户信息,点击登录按钮,进去以后还点击收件箱等等,等正在同多元之操作就之后,我们点击scroll
lock这个按钮,停止录制,也就算是右手方向键上面很位置的按钮,然后为者录制的流程设置一个快捷键,比如ctrl+1。怎么使此录制的长河为,等我们重新上班时,按下ctrl+1,这个软件就见面顺你上次录制的经过挨个做同样全套,直到运行了,整个经过全无待你的插手,以后您不怕足以经过这艺术登录你的oa系统了,一劳永逸,这个时而可以错过倒杯水,喝喝茶,或和同事聊天几句子。
若果你是网友爱好者,它吧得以帮忙你活动攻击对方、自动完成补血、触发连击等操作。

0.1.1 苹果技术支持

  • 技巧文档打开方式 <br />Xcode软件 -> Help ->
    Documentation and API Reference<br
    />文档是当网上读取的,如果想只要更快,可以先进行下载。旧本子的模拟器也于此装。
    <br />Xcode -> Preferences -> Downloads
  • 开发者社区
    https://developer.apple.com
  • iOS文档库
    https://developer.apple.com/library/prerelease/ios/navigation/
  • WWDC 视频

呃,这个软件应用的场景比较多,任由你的想象,记得老王在大学就毕业、参与实习的时段,就用她来形成过局部马上仿佛的操作,我那时候做的是
向我们举行的网站里
录入一些曾预备好之信息,好像是录入人员名单的信,要一个一个底录入,工作暨经常很简单,就是繁琐费事,老王这呢是小喽喽,对吧,这行就该自关系,然后我虽录制了一个流水线,让这个软件帮助我工作……而自我于旁一样台计算机上刷微博。好像不顶同样钟头,40分钟多或多或少底规范,这个软件就帮助我举行截止了。如果此工作全给自身来开,估计得花掉一个上午,并且自己以为为会见眼毛金星。
若为堪编写一些底下本来好还扑朔迷离的操作,按键精灵的论坛里吗闹多网友分享的本子,你了好下载下来大概修改一下供应自己用,并且按键精灵也供了“脚本创业”的服务,如果您生出力量,完全可编制上的剧本内容,让网友付费下载。按键精灵也供了手机端app,也足以成功部分特定的操作

0.1.2 其他技术支持

  • stack overflow 社区
  • OurCode 社区
  • Cocoa China 社区
  • V2EX 社区
  • GitHub (建议查看学习 awesome iOS 系列)

因它们是均等放缓国产的软件,我在节目里虽非提供他的下载链接了,你得到她们之官网及一直下载,注意!是到它的官网下载,不要去第三正的下载网站。。

0.2 学习方式

吓,按键精灵就说这些,再说就起接触软文性质了,下面,咱们介绍任何一样慢慢悠悠效果再有力的流水线自动化软件,叫做auto
hot key,自动热键,他有所的机能就是重新多矣,
她当就以娱乐爱好者而发明的,但是他的职能实在太好用了,现在部分办公人士呢以就此就款软件
来拍卖部分常备的事情。
我们要对办公人士,说一下它的应用,我本着游乐真的有点感冒。
卿啊得安装同一多元的动作,让程序自动执行。
我们可以凭其来自定义有缩写的扩张,比如,老外经常输入by the
way,他们经常用首许母来代替,他们定义输入btw,就会见自行补全by the
way的一体化拼写。有矣这功效,我们尽管足以打定义再度多的拼写的缩写,比如我们常因此底信箱,我们采用的手机号,我们的身份证号,我们的收件地点等等,都足以分级用同错不绝长之假名代表,设置好后,我们输入163,就可自行补全而的163信箱,等等等等,任由而的配备。
咱俩也堪由此外来定义再度多的快捷键,比如加减音量、最大化,最小化窗口,按ctrl+q打开QQ,按ctrl+e来打开浏览器,等等等等,你得拿键盘的富有键位都装及快捷键,只要非跟系统快捷键冲突就实行,
再就是其也克就了片回调函数的作用,比如配置一下,在吸纳邮件的上弹来一个提醒,彻底关闭一个网页的时段就弹出另一个页面,等等。
竟他尚能够导出exe格式的顺序,将之次发送你的对象,帮助恋人做到同样的操作。
你还得安装双重多的推切板,我们都掌握,一般景象下,系统的剪切板只发生一个,我们当复制下一样段子文字的时刻,上一致段复制的情节就是给因丢了。我们可设置一下,通过不同之快捷键来兑现复制多次内容,又非相互影响之景。

0.2.1 方法

  • 信以为真看视频。
  • 理笔记。
  • 完成练习示例。

auto hot
key的成效特别充分多,老王也绝非打熟练,我以微信公众号里,为大家准备了一些网友整理的课,回复马上期节目之号,也就是是20,就能够找到这期节目有关的章和推举。

0.2.2 参考书

  • ios 9 programming fundamentals with swift
  • ios 7 programming fundamentals (Objective-C)

说罢了windows下的软件,咱们在说一下mac上的关于办公自动化的软件。
对mac用户若便发福了,你切莫待额外的寻找第三正在的软件,已经都也您提供了一个较科学的软件,叫automator,他意可以举行在windows上auto
hot key可以实现之效用,并且也殊强。
马上是mac自家的用,也出诸多使用者。
说及这边,我哪怕意识了一个不行现象,我们当为此windows系统的下,微软为以系及支出了平等密密麻麻以,但是我们好像都不用。我们听歌的时节我们因而之凡酷狗,酷我,或个的云音乐,看电影的当儿,我们用之是迅雷看看,或者暴风影音,即使微软当浏览器上
再怎么发力,我们就此的尚是chrome浏览器,或者是局部国的浏览器。我们都用手“投”了票,我们默认了微软以系及做的采用很难用,但是我们怀念,为什么咱们说他的操作系统本身即是死好的也罢?是不是吗是坏难用的,是匪是还有再好之系可替代为?
额头,这是自个儿多想的,跟这期节目之主题无关,只是让大家一个参考。咱们说回来,同样的,如果您来能力,你得拿automator这个软件之一声令下设置的尤其复杂,当然,得到的回报是,你得于办公室的时候更快的落成任务。
当mac上,苹果还吃推荐了一个粗略的脚本语言,叫做applescript,
它可用自然化的言语来助您就部分扑朔迷离的操作,比如定时弹出一个对话框,或发送一查封邮件等等,并且于mac上还有一个applescript的字典,帮你找对应之点子,比较便宜,也够呛推荐。

0.2.3 App Programming Guide for

  • 界面基础

View Controller Programming Guide
View Controller Catalog
View Programming Guide
UIKit User Interface Catalog
Event Handing Guide

  • 图形和卡通

Drawing and Printing Guide
Concurrency Programming Guide
Quartz 2D Programming Guide
Core Animation Programming Guide

  • 网及储存

Network & Internet Starting Point (知道个方向)
Networking Overview (了解个概念)
Data Management Starting Point (知道个方向)

  • 其他

Auto Layout Guide
Scroll View Programming Guide
Table View Programming Guide
Collection View Programming Guide

<br />

听取极客方式就档节目的,也来局部用到linux作为自己默认操作系统的爱人,对于他们,就不需要什么自动化的软件了,linux系统天生就是具有自动化办公的性质,它点自带了重重单脚本语言,完全值得您花精力当方,去做出更好的物。
网友为分享了森下论命令,有好用的即就此他人写的,没有底口舌了好团结写一个
这里被大家推荐一个非常出名的黑客编辑的代码脚本,非常神奇,在github上之下载量相当高,这个开源项目的名称为haker
script
是本子可以实现啊作用也,具作者所说,它会在加班常常吃妻子自动发送一长条短信,会当宿醉不醒时给协调请假,会活动根据邮件
恢复客户之数量,还可一键长距离煮一杯子咖啡……真的可谓是程序员的范。
本身啊会在极客方式的微信的大众号里贴发之剧本的下载地址。

1 Hello Word


说了了电脑端,其实手机端也是生自动化的软件之。我为推荐几只在iPhone上,我仅援引一个神器,叫workflow
她呢是经流程化,自动来拍卖各种事务,它内置 150+
动作,比如被相机、获取当前 GPS 位置、生成 PDF、打开 URL 链接、新建
EeverNote
笔记等等,只要能够巧妙结合,搭配合理,用户几乎会实现其他复杂的职责流程
发出网友便说,即便于这么封闭的体系被,
Workflow也克无情的搜刮使用者享有的想象力,可见这软件到底有多强大,
这边领一下,这个软件是收费的,但是非是不行高,我于《第15期:一个程序员眼中之软件版权》里大概关联了,为价值付费是相同桩更正常不了的业务,我于后头的软件推荐着,可能不见面刻意的提某款软件到底是免费或收费的。
好,咱们继续,对于安卓机型,它的流程化的软件就较多了,功能也大半,我简单推荐几个,一个比好用之凡tasker,TASKER,功能也非输workflow。还有一个凡是MacroDroid,MACRODROID。
前额,如果你吧时有发生比好之自动化软件,也得于节目还是微信公众号里,给我留言,让再多的情人知道。

1.1 创建新工程

  • Create a new Xcode project
  • File -> New -> Project [shift + command + N]

哼,这期节目一口气推荐了几许只软件,在windows、mac、linux、iPhone上、android上都推荐了对应之自动化软件。
吓,这些渔就为卿提供这些,打渔的拿到,真正的能够吃的鱼儿就指你自己捞了,真心的期望这些软件能也汝的活着带来一些勿等同的物。

1.2 选择工程模板

可选多种多样的工模板,包括 iOS, OS X, watchOS, tvOS 一般选择 iOS
-> Single View Application。

哼,这就是是本期极客方式的有所内容,希望这些内容针对君来因此,如果对你有着帮助,想支持一下眼看号用心的创立者,可以吗自身进行局部小额赞助,让我啊您编出更好的内容。你啊得关注极客方式的微信公众号,或入极客方式的微信交流群,在那边,你还能够模仿到又多,
受咱共同努力,一起过上精智的生活,咱们下期再见!

1.3 工程信息

  • Project Name:产品名称
  • Organization Name:组织名称
  • Organization Identifier:新产品唯一名,一般将企业域名反过来写。
  • Language:运行语言
  • Devices:运行设备(通用,iPhone,iPad)
  • Use Core Data:是否用数据存储
  • Include Unit Tests:测试模块
  • Include UI Tests:UI测试模块

Reference
Autohotkey入门教程
黑客的hacker
script

1.4 Git 仓库

版本控制
Source Control:Create Git repository on My Mac
后续版本控制来特意篇幅。

1.5 Xcode界面摸底

1.6 Storyboard

  • 图层识别
    入选图层之后,可以当 libraries -> identity inspector ->
    Document -> Label 中安图层名称,可以转图层在 Storyboard 的
    Document Outline 中之名称。以利于识别。
  • 组件 library
    足拖动这里的各种零部件到 canves 或内部对应的图层上。
  • 设置 Document Outline 显示名称
    入选组件 -> Indentity inspector -> Document -> Label
  • 设置 ViewController 尺寸
    选中 ViewController -> Attributes inspector -> Simulated
    Merices -> Size

1.7 模拟器

  • 显尺寸调节
    Window -> Scale -> … [command + 1-5]
  • 设备操作
    Hardware -> …
  • 回到出厂设置
    Simulator -> Reset content and Settings…

1.8 真机调试

  • 添加调试账号
    Xcode -> Preferences -> Accounts -> +
  • 安调试账号
    Workspace -> General -> Identity -> Team 进行选 -> Fix
    issues
  • 运行
    首糟糕运行会提示错误,需要真机验证
    真机 -> 设置 -> 通用 -> 描述文件 -> 选中信任 -> 回到
    Xcode 再次运行

1.9 App 基本概念

  • iOS App 代码结构(这是 Objective-c 语言,Swift 有所不同,main
    文件会叫藏)

    • main()
    • UIApplicationMain()(生成一个 UIApplication
      对象并设置成该应用的代办。)
    • UIApplication 对象
    • UIApplicationDelegate
  • iOS App 运行条件
    • Sandbox
    • 博目录 NSHomeDirectory()
  • iOS 应用都是一个 Bundle
    • Bundle: 带有 Info.plist 字典的目录
    • 通过 NSBundle 类访问中的资源
    • 首要是经过 mainBundle
    • resource bundle 和 framework(可实施动态库)
  • 查看 App Bundle
    设置栏中挑选设备 -> Generic iOS Device -> command + B 构建
    -> Workspace -> Products -> xxx.app -> 右键 查看文件
    -> 右键 显示包内容

<br />

3 Button – Storyboard 和代码之间联系方式


介绍最常用之 Interface 组件之一 UIButton,以及它的使方法。
用介绍 Outlet Action 等概念。

3.1 UIButton

3.2 IBOutlet

  • IBOutlet Connection
    管 Nib object 与 代码中之 IBOutlet 变量相连接

    • 于 Storyboard 中将组件和代码中的 IBOutlet 变量进行连续后,会以
      Storyboard 代码中多出这样同样截连接说明

      <connections>
          <outlet property="okLabel" destination="QJt-2z-ban" id="mhJ-Nu-TIR"/>
      </connections>
      // property 变量名称
      // destination 界面上的组件名称
      // id 标志这个连接本身
      
    • 运转时调用
      鉴于 xib
      中蕴藏的是界面模板,所以在允许的下,类实例代码会触发界面的实例化方法。
      末调用 [UINib instantiateWithOwner:options:]
      方法实例化界面。
      Owner 实际上是调用了一个按部就班名绑定的性能。
      [owner setValue:uiObj forKey:outlet.property]

事实上我好都扣留不知底就段在说啊……大概是说 outlet connection
其实是标了界面及代码之间的涉嫌,然后以程序运行的时候,会通过同样雨后春笋
runtime
方法调用这种关涉,并依据界面模板实例化界面组件,从而生成组件绘制吧。

  • Action Connection

    • 界面事件接二连三 IBAction

      <connections>
          <action selector="buttonAction:" destination="BYZ-38-t0r" eventType="touchUpInside" id="BQA-pw-9f8"/>
      </connections>
      // selector 方法名称
      // eventType 事件类型
      

<br />

4 Image


图片流:界面全部由现成的图形做。耗内存,但是简便。
代码流:界面全部由于代码绘制而成为,省内存,适应性强。

4.1 UIImage

  • 图形加载

  • 图片动画

    let anmiationImage = UIImage.animatedImageNamed("ImageArrayName", duration: 2.0)
    // ImageArrayName 是动画图片的前缀,动画图片资源应该按照该名称后面加数字来命名。
    // duration 是总时长。
    // KeyNote 可以导出动画的每帧图片。
    

4.2 Assert Catalog

  • Assert Catalog 介绍

    模板会默认生成一个 Assert Catalog 文件同时其中起 Appicon 以用来给
    App 提供系统图标。
    直白用图名字的法子加载图片,虽然便民,但是出于这样的做法会管图片缓存在内存中,在图片于多尺寸比充分时会照成内存压力。

  • Assert Catalog 功能

    • 补加图:直接拿图片资源拖入 Asset Catalog,或者下的 + 号。

    • 资源属性:每个图片可以来三独尺码为提供给不同之屏幕尺寸下。还得设置适用各种装备和各种特定尺寸
      Attributes -> Devices。

    • 图片切片:点击图片 -> Attributes -> Slicing -> Slices
      -> …

  • 适用矢量图片

    • 放置对应之图片格式进去 Assert Catalog 之后,然后设置其性。

    • Attributes -> Devices -> Scale Factors -> Single Vector

<br />

5 第一个 App


5.1 需求分析

  • 详细询问下需求,需要相当了解用户想要的凡呀。
  • 翔规划下之逻辑流程,各个模块功能的原委和去向。

5.2 程序设计

平衡设计原则:设计程序时也未来或许的求做好准备。但是这种办法有好有坏,有时候考虑太多,就会促成当前工作难以完成。如果完全就考虑当下,就可能多未来重构的次数。中间的过要靠程序员把握。

  • 活动通流程图,确认游戏逻辑
  • 确认静态数据结构

5.3 示例代码结构

逐代码模块之间的沟通与涉嫌之明朗。

5.4 Keynote 课件展示

<br />

6 View Controller


6.1 简单的设计模式介绍

6.2 UIViewController

  • UIViewController 介绍

  • 获取 ViewController

    • 创建 rootViewController
      • Info.plist 中的 UIMainStoryboardFile, NSMainNibFile
        指定了绝望控制器的源于。
      • UIApplication 会通过调用
        _runWithMainScene:transitionContext:completion: 方法。
      • 下一场调用 _loadMainInterfaceFile 来取出 Info.plist 中
        UIMainStoryboardFile 或者 NSMainNibFile 信息。
      • 万一是前者,则更调用
        _loadMainStoryboardFileNamed:bundle:
      • 若是后者,则还调用 _loadMainNibFileNamed:bundle:
    • 加载好 rootViewController 之后就是把这视图控制器赋值给
      appDelegate.window.rootViewController。
    • 而上述措施初始化界面失败,则会调用
      UIApplicationDelegate didFinshLaunch
      方法来叫程序员一个以程序初始化界面的机遇。最开头经常,也是只有这一个方式来初始化界面的。
    • 若果上述两种办法都未曾给 appDelegate.window.rootViewController
      赋值,则是应用之 window 就见面否 nil 显示黑屏.
  • 获取 ViewController 的 View

    • 起定义 ViewController 装载过程
      • 调用 [UIViewController loadView]
        如果生落实,调用之后虽未会见调用后面的法门了。如果是默认实现则会调用下面的其余艺术。
      • 调用 [UIViewController nibName] 如果是默认模板,则 nibName
        应该是自 Storyboard。如果是代码调用 initWithNibName
        则由程序员指定 nib. 如果两者都未是,则会调用下面的不二法门。
      • [UIViewController exisitingNibNameMatchingClassName:bundle:],它会冲
        ViewController 方法猜测并且查找
        Nib,如果还找无顶,系统会创一个空荡荡视图。
    • 要点
      • isViewLoaded 判断 ViewController 的 View 是否曾经加载好了。
      • loadView 中未克调用 super.

6.3 View Controller Lifecycle

6.3 多个 View Controller

  • 弹来新视图的法门 presentViewController:animation:completion:

    • UIViewController 的 modalPresentationStyle
      是设置弹来控制器风格的特性。
    • UIViewController 的 modalTransitionStyle
      是装弹出动画风格的性能。
  • iOS 8+ 之后新点子 showViewController:sender

  • 自由控制器 dismissViewControllerAnimated:completion:

  • 回传数据:把大控制器作为子控制器的代办,通过回调函数来传递数据。并且由于父控制器来控制子控制器的放飞,而非是分段控制器自己调用
    dismissViewControllerAnimated:completion: 方法。

<br />

7 Storyboard


Storyboard 也是一个 xib 文件,只是她里面未特是放 View,而是停
Scene.
得点击 ViewController 然后一直拖来 Segue 到另外 ViewController
当中,从而创造没有组件触发事件之 Segue。

7.1 Storyboard Segue

  • 用代码进行 Segue 跳转

    func segueAction() {
        // 0 以 Segue 跳转
        performSegueWithIdentifier("SegueIdentifier", sender: nil)
    
        // 1 获取 ViewController
        if let nextViewController = storyboard?.instantiateViewControllerWithIdentifier("ViewControllerIdentifier") {
            showViewController(nextViewController, sender: nil)
        }
    }
    
  • Segue 传值

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        // 每次有 Segue 被触发就会调用此函数,以提供传值时机。
    }
    
  • Storyboard Segue 回退

    @IBAction override func unwindForSegue(unwindSegue: UIStoryboardSegue, towardsViewController subsequentVC: UIViewController) {
        // @IBAction func unwindFuncName(segueName: UIStoryboardSegue) { }
        // 名称可以随意,参数至少要有一个 UIStoryboardSegue。用来作为 Storyboard 回退触发事件。
    }
    

7.2 多 Storyboard

  • 实地景无限多的上,可以将 Storyboard
    分成基本上只文本。场景内的接入,可以由此简单栽方式落实。

    • Storyboard Reference 组件,跟 ViewController 组件一样可拖动到
      Canvas 上。并且可以安装它对的 Storyboard 文件,Reference
      ID(如果不点名就是 initial View Controller)。
    • 入选需要停放于初 Storyboard 上之 ViewController,然后点击 Editor
      -> Refactor to Storyboard。然后便会创造新的 Storyboard
      文件,并以当选的 ViewController 放置到中。
  • 博其它 Storyboard

    func muchStoryboard() {
        // 根据名称获取 Storyboard
        let storyboard = UIStoryboard(name: "StoryboardName", bundle: NSBundle.mainBundle())
    }
    

<br />

8 App Lifecycle


8.1 应用启动

  • main – 启动程序

  • UIApplicationMain() – 启动以代理

  • UIApplication – 启动信息循环

  • APPDelegate – 生成采取代理

  • 冲 Storyboard 或者代码创建的 ViewController 加载
    rootViewController

8.2 用户互动

RunLoop Mode: [source] 其实就算是事件源。

  • main run loop 循环关注事件源。接收事件。

  • 接受及事件就是传递给 Application object。

  • Application object 对事件开展分发。

  • 事件因代码逻辑反馈到视图上。

8.3 AppDelegate

  • 出生

    • application:willFinishLaunchingWithOptions: 事件
      UI 已经加载出来了。RootViewController
      已经创造好,只是还尚无看它的 view 方法。
      应用级的初始化工作绝好都居这职务,但是毫无以此地举行顶耗时的风波。

    Options 会提供启动状态信息。
    App Programming Guide for iOS 文档中的 Preserving Your App’s
    Visual Appearance Across Launches 中生详尽的说明。

    • application:didFinishLaunchingWithOptions: 事件
      界面已过来了了,但是 UI
      还没停到界面及。这时候代码都上马实践,但是界面看不显现,也未会见展开响应。
      依旧是采取级别的初始化机会。

    Options 会提供启动状态信息。
    * applicationDidBecomeActive: 事件
    行使都使起动了的会。

  • 跻身未欢状态

    • applicationWillResignActive: 事件
  • 进后台状态

    • applicationDidEnterBackground: 事件
      顿时是一个短之时机,默认是 5 秒内到位。但是好透过
      beginBackgroundTask 方法可以落大约 10 分钟之后台运行事件。
      若果还待重丰富的波,需要编制后台运行程序。详细查看文档。
  • 采用关闭

    • applicationWillTerminate: 事件
      倘若你的运正被吊起于没多久,然后就于关了,就见面吸收到这个事件。如果您既让吊起在后台了,那以关门的时段就是非见面收这通知。
  • 应用复活

    • applicationWillEnterForeground: 事件
      利用将返回前台的风波。

8.4 移动应用的风味。

动使用之运用会死的碎片,会在各种状态中来转切换。

<br />

9 Navigation


9.1 Navigation Bar

9.2 UINavigationController

  • Navigation Controller 的结构(属性)
    • viewControllers
      (视图控制器数组,管理方导航控制器的有所视图控制器。)

      • topViewController (最顶上的视图控制器,绝大多数时跟
        visibleViewController 是跟一个,但为不绝。)
      • visibleViewController (当前来得的视图控制器。)
    • navigationBar
    • toolbar
    • delegate

  • 深受现有的 ViewController 添加 NavigationController

    • 选中 ViewController -> Editor -> Embed In -> Navigation
      Controller
    • 拖动 NavigationController 到 Canvas -> 设置 ViewController
      成为其 rootViewController
  • 运用 UINavigationController 的 Delegate
    方法会来拓展导航时的多寡传递(但是尽量要用 Segue
    方法来进展数据传递)

    • navigationController:willShowViewController:animated:
      (一般数量传递会在此处开展。)
    • navigationController:didShowViewController:animated:

9.3 在代码中行使 NavigationController

连无引进用代码创建,毕竟用 Storyboard 就非常便利了。
setViewControllers:animated: 比较起时机意义,可以为导航不用每次都于
rootViewController 开始。更加灵活。

9.4 自定义导航栏

刺探以下依次类的属性,并根据实际要求由定义。
苹果有供 Customizing
UINavigationBar
的代码示例,里面有丰富多采的自定义方法。

  • UINavigationBar
  • UIBarItem
    • UIBarButtonItem
  • UIToolBar

导航栏标题之上的小楷在 Navigation Item -> Prompt 中安。

<br />
iOS 实战开发课程笔记

本贴旨在作针对极客班 《iOS
开发实战》第五期期课程视频重新学习的笔记。
靶是树立一个比较完好的 iOS 开发知识点框架和便捷手册。
本着各个内容之事无巨细研究会开启新贴深入探索。
该贴仍于不断完善中。

0 导论


0.1 技术支持

0.1.1 苹果技术支持

  • 技术文档打开方式 <br />Xcode软件 -> Help ->
    Documentation and API Reference<br
    />文档是以网上读取的,如果想如果进一步高效,可以优先进行下载。旧本子的模拟器也当此处设置。
    <br />Xcode -> Preferences -> Downloads
  • 开发者社区
    https://developer.apple.com
  • iOS文档库
    https://developer.apple.com/library/prerelease/ios/navigation/
  • WWDC 视频

0.1.2 其他技术支持

  • stack overflow 社区
  • OurCode 社区
  • Cocoa China 社区
  • V2EX 社区
  • GitHub (建议查看学习 awesome iOS 系列)

0.2 学习方式

0.2.1 方法

  • 当真看视频。
  • 整治笔记。
  • 好练习示例。

0.2.2 参考书

  • ios 9 programming fundamentals with swift
  • ios 7 programming fundamentals (Objective-C)

0.2.3 App Programming Guide for

  • 界面基础

View Controller Programming Guide
View Controller Catalog
View Programming Guide
UIKit User Interface Catalog
Event Handing Guide

  • 图形和卡通

Drawing and Printing Guide
Concurrency Programming Guide
Quartz 2D Programming Guide
Core Animation Programming Guide

  • 网及储存

Network & Internet Starting Point (知道个方向)
Networking Overview (了解个概念)
Data Management Starting Point (知道个方向)

  • 其他

Auto Layout Guide
Scroll View Programming Guide
Table View Programming Guide
Collection View Programming Guide

<br />

1 Hello Word


1.1 创建新工

  • Create a new Xcode project
  • File -> New -> Project [shift + command + N]

1.2 选择工程模板

足挑选多种多样的工模板,包括 iOS, OS X, watchOS, tvOS 一般选择 iOS
-> Single View Application。

1.3 工程信息

  • Project Name:产品名称
  • Organization Name:组织称
  • Organization Identifier:新产品唯一名,一般将店域名反过来写。
  • Language:运行语言
  • Devices:运行设备(通用,iPhone,iPad)
  • Use Core Data:是否使用数据存储
  • Include Unit Tests:测试模块
  • Include UI Tests:UI测试模块

1.4 Git 仓库

版本控制
Source Control:Create Git repository on My Mac
继承版本控制来特别篇幅。

1.5 Xcode界面询问

1.6 Storyboard

  • 图层识别
    入选图层之后,可以在 libraries -> identity inspector ->
    Document -> Label 中装置图层名称,可以变更图层在 Storyboard 的
    Document Outline 中之称呼。以方便识别。
  • 组件 library
    足拖动这里的各种零部件到 canves 或中对应的图层上。
  • 安 Document Outline 显示名称
    当选组件 -> Indentity inspector -> Document -> Label
  • 设置 ViewController 尺寸
    选中 ViewController -> Attributes inspector -> Simulated
    Merices -> Size

1.7 模拟器

  • 来得尺寸调节
    Window -> Scale -> … [command + 1-5]
  • 配备操作
    Hardware -> …
  • 回来出厂设置
    Simulator -> Reset content and Settings…

1.8 真机调试

  • 加上调试账号
    Xcode -> Preferences -> Accounts -> +
  • 装调试账号
    Workspace -> General -> Identity -> Team 进行选 -> Fix
    issues
  • 运行
    首次等运行会提示错误,需要真机验证
    真机 -> 设置 -> 通用 -> 描述文件 -> 选中信任 -> 回到
    Xcode 再次运行

1.9 App 基本概念

  • iOS App 代码结构(这是 Objective-c 语言,Swift 有所不同,main
    文件会叫躲)

    • main()
    • UIApplicationMain()(生成一个 UIApplication
      对象并安装成该利用的代办。)
    • UIApplication 对象
    • UIApplicationDelegate
  • iOS App 运行条件
    • Sandbox
    • 得目录 NSHomeDirectory()
  • iOS 应用都是一个 Bundle
    • Bundle: 带有 Info.plist 字典的目录
    • 由此 NSBundle 类访问中的资源
    • 关键是通过 mainBundle
    • resource bundle 和 framework(可尽动态库)
  • 查看 App Bundle
    设置栏中精选设备 -> Generic iOS Device -> command + B 构建
    -> Workspace -> Products -> xxx.app -> 右键 查看文件
    -> 右键 显示包内容

<br />

3 Button – Storyboard 同代码之间联系方式


介绍最常用之 Interface 组件之一 UIButton,以及她的施用方式。
就此介绍 Outlet Action 等概念。

3.1 UIButton

3.2 IBOutlet

  • IBOutlet Connection
    将 Nib object 与 代码中的 IBOutlet 变量相连接

    • 每当 Storyboard 中将组件和代码中之 IBOutlet 变量进行连续后,会当
      Storyboard 代码中几近出去这么平等段子连接说明

      <connections>
          <outlet property="okLabel" destination="QJt-2z-ban" id="mhJ-Nu-TIR"/>
      </connections>
      // property 变量名称
      // destination 界面上的组件名称
      // id 标志这个连接本身
      
    • 运行时调用
      是因为 xib
      中贮存的凡界面模板,所以在许的时节,类实例代码会触发界面的实例化方法。
      末尾调用 [UINib instantiateWithOwner:options:]
      方法实例化界面。
      Owner 实际上是调用了一个按照名绑定的性。
      [owner setValue:uiObj forKey:outlet.property]

骨子里自己自己都扣留无亮就段在说啊……大概是说 outlet connection
其实是标了界面及代码之间的涉及,然后在程序运行的时刻,会透过平等系列
runtime
方法调用这种干,并冲界面模板实例化界面组件,从而生成组件绘制吧。

  • Action Connection

    • 界面事件接二连三 IBAction

      <connections>
          <action selector="buttonAction:" destination="BYZ-38-t0r" eventType="touchUpInside" id="BQA-pw-9f8"/>
      </connections>
      // selector 方法名称
      // eventType 事件类型
      

<br />

4 Image


图片流:界面全部是因为现成的图片做。耗内存,但是简便。
代码流:界面全部出于代码绘制而成,省内存,适应性强。

4.1 UIImage

  • 图加载

  • 图动画

    let anmiationImage = UIImage.animatedImageNamed("ImageArrayName", duration: 2.0)
    // ImageArrayName 是动画图片的前缀,动画图片资源应该按照该名称后面加数字来命名。
    // duration 是总时长。
    // KeyNote 可以导出动画的每帧图片。
    

4.2 Assert Catalog

  • Assert Catalog 介绍

    模板会默认生成一个 Assert Catalog 文件同时其中起 Appicon 以用来给
    App 提供系统图标。
    一直用图形名字的不二法门加载图片,虽然便民,但是出于这样的做法会把图片缓存在内存中,在图片于多尺寸比充分时会照成内存压力。

  • Assert Catalog 功能

    • 增补加图:直接以图纸资源拖入 Asset Catalog,或者下的 + 号。

    • 资源属性:每个图片可以有三单尺码为供被不同之屏幕尺寸下。还可以设置适用各种设施以及各种特定尺寸
      Attributes -> Devices。

    • 图切片:点击图片 -> Attributes -> Slicing -> Slices
      -> …

  • 适用矢量图片

    • 放对应之图片格式进去 Assert Catalog 之后,然后设置其特性。

    • Attributes -> Devices -> Scale Factors -> Single Vector

<br />

5 第一个 App


5.1 需求分析

  • 详见询问下需求,需要相当了解用户想只要的凡呀。
  • 详尽规划下之逻辑流程,各个模块功能的由和去向。

5.2 程序设计

平衡设计原则:设计程序时也未来说不定的求做好准备。但是这种艺术有好有坏,有时候考虑太多,就会导致当前工作难以完成。如果完全只是考虑当下,就可能多未来重构的次数。中间的度要依赖程序员把握。

  • 挪通流程图,确认游戏逻辑
  • 肯定静态数据结构

5.3 示例代码结构

各个代码模块之间的维系与干的明朗。

5.4 Keynote 课件展示

<br />

6 View Controller


6.1 简单的设计模式介绍

6.2 UIViewController

  • UIViewController 介绍

  • 获取 ViewController

    • 创建 rootViewController
      • Info.plist 中之 UIMainStoryboardFile, NSMainNibFile
        指定了绝望控制器的发源。
      • UIApplication 会通过调用
        _runWithMainScene:transitionContext:completion: 方法。
      • 接下来调用 _loadMainInterfaceFile 来取出 Info.plist 中
        UIMainStoryboardFile 或者 NSMainNibFile 信息。
      • 设是前者,则再调用
        _loadMainStoryboardFileNamed:bundle:
      • 而是接班人,则又调用 _loadMainNibFileNamed:bundle:
    • 加载好 rootViewController 之后虽拿此视图控制器赋值给
      appDelegate.window.rootViewController。
    • 一旦上述办法初始化界面失败,则会调用
      UIApplicationDelegate didFinshLaunch
      方法来深受程序员一个运程序初始化界面的机会。最初步时,也是只有马上一个智来初始化界面的。
    • 设若上述两栽方法还未曾吃 appDelegate.window.rootViewController
      赋值,则是用的 window 就会见为 nil 显示黑屏.
  • 获取 ViewController 的 View

    • 于定义 ViewController 装载过程
      • 调用 [UIViewController loadView]
        如果产生落实,调用之后便无见面调用后面的点子了。如果是默认实现则会调用下面的另外方法。
      • 调用 [UIViewController nibName] 如果是默认模板,则 nibName
        应该是来自 Storyboard。如果是代码调用 initWithNibName
        则由程序员指定 nib. 如果两者都不是,则会调用下面的不二法门。
      • [UIViewController exisitingNibNameMatchingClassName:bundle:],它会根据
        ViewController 方法猜测并且查找
        Nib,如果还找无顶,系统会创一个空荡荡视图。
    • 要点
      • isViewLoaded 判断 ViewController 的 View 是否早已加载好了。
      • loadView 中无能够调用 super.

6.3 View Controller Lifecycle

6.3 多个 View Controller

  • 弹有新视图的法 presentViewController:animation:completion:

    • UIViewController 的 modalPresentationStyle
      是安装弹有控制器风格的特性。
    • UIViewController 的 modalTransitionStyle
      是装弹出动画风格的性能。
  • iOS 8+ 之后新方式 showViewController:sender

  • 放飞控制器 dismissViewControllerAnimated:completion:

  • 回传数据:把大控制器作为子控制器的代办,通过回调函数来传递数据。并且由于父控制器来控制子控制器的放,而休是分段控制器自己调用
    dismissViewControllerAnimated:completion: 方法。

<br />

7 Storyboard


Storyboard 也是一个 xib 文件,只是她里面未只是是推广 View,而是停
Scene.
可以点击 ViewController 然后一直拖来 Segue 到其它 ViewController
当中,从而开创没有组件触发事件之 Segue。

7.1 Storyboard Segue

  • 运代码进行 Segue 跳转

    func segueAction() {
        // 0 以 Segue 跳转
        performSegueWithIdentifier("SegueIdentifier", sender: nil)
    
        // 1 获取 ViewController
        if let nextViewController = storyboard?.instantiateViewControllerWithIdentifier("ViewControllerIdentifier") {
            showViewController(nextViewController, sender: nil)
        }
    }
    
  • Segue 传值

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        // 每次有 Segue 被触发就会调用此函数,以提供传值时机。
    }
    
  • Storyboard Segue 回退

    @IBAction override func unwindForSegue(unwindSegue: UIStoryboardSegue, towardsViewController subsequentVC: UIViewController) {
        // @IBAction func unwindFuncName(segueName: UIStoryboardSegue) { }
        // 名称可以随意,参数至少要有一个 UIStoryboardSegue。用来作为 Storyboard 回退触发事件。
    }
    

7.2 多 Storyboard

  • 当场景无限多之上,可以拿 Storyboard
    分成基本上单文件。场景中的连片,可以由此简单种艺术落实。

    • Storyboard Reference 组件,跟 ViewController 组件一样好拖动到
      Canvas 上。并且可装它对的 Storyboard 文件,Reference
      ID(如果无指定就是 initial View Controller)。
    • 当选需要停放于新 Storyboard 上的 ViewController,然后点击 Editor
      -> Refactor to Storyboard。然后就是见面创造新的 Storyboard
      文件,并拿当选的 ViewController 放置到中。
  • 赢得其它 Storyboard

    func muchStoryboard() {
        // 根据名称获取 Storyboard
        let storyboard = UIStoryboard(name: "StoryboardName", bundle: NSBundle.mainBundle())
    }
    

<br />

8 App Lifecycle


8.1 应用启动

  • main – 启动程序

  • UIApplicationMain() – 启动以代理

  • UIApplication – 启动信息循环

  • APPDelegate – 生成采取代理

  • 基于 Storyboard 或者代码创建的 ViewController 加载
    rootViewController

8.2 用户互动

RunLoop Mode: [source] 其实就是是事件源。

  • main run loop 循环关注事件源。接收事件。

  • 收起到事件就传递给 Application object。

  • Application object 对事件开展分发。

  • 事件因代码逻辑反馈到视图上。

8.3 AppDelegate

  • 出生

    • application:willFinishLaunchingWithOptions: 事件
      UI 已经加载出来了。RootViewController
      已经创造好,只是还没看它的 view 方法。
      应用级的初始化工作太好都置身这职务,但是绝不以此举行最耗时的事件。

    Options 会提供启动状态信息。
    App Programming Guide for iOS 文档中之 Preserving Your App’s
    Visual Appearance Across Launches 中生详尽的说明。

    • application:didFinishLaunchingWithOptions: 事件
      界面已恢复了了,但是 UI
      还没有放到界面上。这时候代码都开推行,但是界面看不显现,也无会见展开响应。
      仍是使用级别的初始化机会。

    Options 会提供启动状态信息。
    * applicationDidBecomeActive: 事件
    动用都使从头倒了的会。

  • 进入不活跃状态

    • applicationWillResignActive: 事件
  • 进去后台状态

    • applicationDidEnterBackground: 事件
      即时是一个指日可待之火候,默认是 5 秒内形成。但是可通过
      beginBackgroundTask 方法好取得大约 10 分钟之后台运行事件。
      比方还待还丰富之风波,需要编制后台运行程序。详细查看文档。
  • 行使关闭

    • applicationWillTerminate: 事件
      设您的用正被高悬于没多久,然后就吃关门了,就会吸收及此波。如果您就于挂于后台了,那在关的时段便未会见接到这个通知。
  • 使用复活

    • applicationWillEnterForeground: 事件
      应用将返回前台的波。

8.4 移动使用之特色。

挪应用的运用会要命之散装,会当各种状态被来扭转切换。

<br />

9 Navigation


9.1 Navigation Bar

9.2 UINavigationController

  • Navigation Controller 的结构(属性)
    • viewControllers
      (视图控制器数组,管理在导航控制器的持有视图控制器。)

      • topViewController (最顶上之视图控制器,绝大多数早晚和
        visibleViewController 是跟一个,但也无绝。)
      • visibleViewController (当前著的视图控制器。)
    • navigationBar
    • toolbar
    • delegate

  • 受现有的 ViewController 添加 NavigationController

    • 选中 ViewController -> Editor -> Embed In -> Navigation
      Controller
    • 拖动 NavigationController 到 Canvas -> 设置 ViewController
      成为其 rootViewController
  • 运用 UINavigationController 的 Delegate
    方法会来拓展导航时之数额传递(但是尽量要用 Segue
    方法来进展数量传递)

    • navigationController:willShowViewController:animated:
      (一般数量传递会在此展开。)
    • navigationController:didShowViewController:animated:

9.3 在代码中运用 NavigationController

并无推荐应用代码创建,毕竟用 Storyboard 就杀方便了。
setViewControllers:animated: 比较有空子意义,可以叫导航不用每次都从
rootViewController 开始。更加灵敏。

9.4 自定义导航栏

打探以下顺序类的性能,并冲实际要求于定义。基本上都是 Storyboard
中的操作,太简单粗暴了无法言语讲述。
苹果有提供 Customizing
UINavigationBar
的代码示例,里面有多种多样的自定义方法。

  • UINavigationBar
  • UIBarItem
    • UIBarButtonItem
  • UIToolBar

导航栏标题之上的小楷在 Navigation Item -> Prompt 中安。

<br />

10 TabBarController


10.1 UITabBarController 的结构

Tab Bar Item 一般不超越五独,否则会受隐形。

  • tabBar

    • UITabBarItem
    • .moreNavigationController
  • viewControllers

    • customizableViewControllers
  • selectedViewController

  • delegate

    • UITabBarControllerDelegate

10.2 UITabBarItem

特性对应样式。

10.3 在代码中应用 UITabBarController

难忘在安的常一旦安装好 ViewController 的 tabBarItem 属性。

10.4 自定义 TabBar

图标的应用要严格以系统定义来所以,否则会于用户混乱。

  • 简言之定制

  • 高中档按钮

    放置 5 只页面。然后采用一个初的视图覆盖中等的特别按钮。

    @implementation MyTabBar
    - (void) viewWillAppear:(BOOL)animated {
        [self addCenterButtonWithImage:[UIImage imageNamed:@"camera"] highlightImage:nil];
    }
    
    // 计算按钮的位置并且放置到中间
    -(void) addCenterButtonWithImage:(UIImage*)buttonImage highlightImage:(UIImage*)highlightImage
    {
        UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin;
        button.frame = CGRectMake(0.0, 0.0, buttonImage.size.width, buttonImage.size.height);
        [button setBackgroundImage:buttonImage forState:UIControlStateNormal];
        [button setBackgroundImage:highlightImage forState:UIControlStateHighlighted];
    
        CGFloat heightDifference = buttonImage.size.height - self.tabBar.frame.size.height;
        CGPoint center = self.tabBar.center;
        center.y = center.y - heightDifference/2.0 - self.tabBar.frame.size.height/3.0;
        button.center = center;
    
        [button addTarget:self action:@selector(middleButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
    
        [self.view addSubview:button];
    }
    
    // It is OK to replace IBAction with void here.
    -(IBAction)middleButtonTapped:(id)sender {
        [self showViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"middlepopvc"] sender:self];
    }
    
  • 双重强悍之变更

    定制 UITableViewController,具体查看代码实现。( VerticalBar )

      ![](http://upload-images.jianshu.io/upload_images/721097-ff083038d253a2c2?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

<br />

11 UITableView


UITableView
是司空见惯支付使用最累之零部件有。由于自事先曾经召开了无数下,所以听课的下多比简便的东西就是无开展记录了。建议还是如多做几只
Demo 进行演习,并且大多扣文档。熟悉 UITableViewDataSource 以及
UITableViewDelegate 的各种方式。
要要高度定制,还需了解一下 UIScrollViewDelegate
的方法,UITableViewDelegate
协议呢继承自它,所以它的计吗同等产生因此,这样可为你的 TableView
更加灵活个性。

  • 认识 UITableView

  • 一个 TableView 需要之职能。

  • iOS 中的 UITableView 结构

    • UITableView
    • UITableViewCell
      • UIView
    • UITableViewDataSource
    • UITableViewDelegate
    • NSIndexPath
      • row
      • section
  • UITableView 学习葡京游戏网址路线

11.1 UITableView 的基本采用

datas 是 [[String]] 格式的言传身教数据。

  • 设置 UITableView 的风格:.style

  • 设置 .dataSource 实现 UITableViewDataSource 中之常用方法。

    // MARK: - UITableViewDataSource
    // 设置表格 Section 数量
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return datas.count
    }
    // 设置各个 Section 的 Row 数量
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return datas[section].count
    }
    // 设置每个 Cell 的具体内容
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("CellIndetifier")!
        cell.textLabel?.text = datas[indexPath.section][indexPath.row]
        return cell
    }
    // 设置表格表头文字
    func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        return "Header"
    }
    // 设置表格表尾文字
    func tableView(tableView: UITableView, titleForFooterInSection section: Int) -> String? {
        return "Footer"
    }
    
  • 设置 .delegate 实现 UITableViewDelegate 中之常用方法。

    // MARK: - UITableViewDelegate
    // 设置表格各个 Section 的表头视图。
    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        return nil
    }
    // 设置表格各个 Section 的表尾视图。
    func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        return nil
    }
    // 选中某 Row 时触发的事件。
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        // ...
    }
    

11.2 UITableViewCell

在意:prepareForSegue 事件触发时,目标 ViewController 还没有调用
ViewDidLoad

  • Cell 数据传递
    didSelectRowAtIndexPath 方法被调用 performSegueWithIdentifier
    的言语,可以一直把 indexPath 作为 sender 参数传递到
    prepareForSegue 中。这样尽管足以把针对承诺数据传递给下一个
    ViewController 了。
  • Cell 高度
    • 负有行都一样高则装 tableView.rowHeight 会通过
      UITableViewAutomaticDimension 自动重新推算调整一下。
    • 惊人都不比则透过 UITableViewDelegate
      tableView:heightForRowAtIndexPath: 方法进行安装。
    • 为得透过安装 tableView.estimatedRowHeight
      来设置一个预估高度。
  • 定制 Cell – Prototype Cell

    • 可以当 Storyboard 中的 cell 进行自定义设计。

    • 通过 xib 创建 Cell

      let nib = UINib(nibName: "CellXibName", bundle: nil) // nil is UIBundle.mainBundle()
      tableView.registerNib(nib, forCellReuseIdentifier: "CellIdentifier")
      
    • 透过全代码设置 Cell,但是得使于起定义 Cell 类中重载
      initWithStyle 方法。

      tableView.registerClass(CustomCell.self, forCellReuseIdentifier: "CellIdentifier")
      

11.3 UITableViewController

RefreshControl 的使用。

  • 下拉刷新支持

  • 数量刷新

11.4 UITableView 交互

  • 选中

  • 操纵表滚动

  • 表编辑支持

  • 编排模式处理过程

  • 带索引的报表

  • 目录本地化

  • 高亮和菜单

  • 报表和寻找

<br />


<br />


<br />

参考资料


知乎:品雪