从 0 开发一款 iOS App
朱德权
腾讯高级工程师
24183 人已学习
新⼈⾸单¥59
课程目录
已完结/共 106 讲
第一章:课程简介和开发前的准备 (4讲)
第二章:实现App的基本界面 (33讲)
第三章:实现App的基础功能 (35讲)
时长 18:24
第四章:App功能扩展和完善 (34讲)
从 0 开发一款 iOS App
登录|注册
留言
10
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 17 | UICollectionView的基本应用和实现
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | 常见App类型及技术栈浅析
04 | 使用Xcode创建第一个工程
05 | MVC模式:iOS中的架构基石
06 | iOS中的视图UIView
07 | 了解UIView的生命周期
08 | 视图的控制器UIViewController
09 | 结合视图和控制器构建Tabbar样式页面
10 | 使用Navigation构建App的基础交互
11 | iOS基本页面框架的构成和实现
12 | 系统函数中常见模式Delegate
13 | UITableView简介
14 | UITableView中Delegate和Datasource的使用
15 | UITableViewCell的复用及原理
16 | 结合子视图实现完整的列表界面
17 | UICollectionView的基本应用和实现
18 | UICollectionViewLayout的应用
19 | 基本列表视图的选择和使用
20 | 滚动视图的基类UIScrollView简介
21 | 应用UIScrollViewDelegate实现复杂逻辑
22 | iOS中滚动视图对比及App内应用场景浅析
23 | iOS中文字的展示:UILabel的使用与布局
24 | iOS中图片的展示:UIImage与UIImageView的应用
25 | iOS中按钮的实现:UIButton的使用
26 | UIControl以及Target-Action模式
27 | 使用UIGestureRecognizer实现自定义点击与手势
28 | 通过UIAlertView了解UIKit系统函数的设计和使用
29 | Web基础知识及WKWebView 介绍
30 | 使用WKWebView及Delgate实现简单的页面加载
31 | 认识观察者模式KVO并展示页面加载进度
32 | iOS开发中的Web应用浅析
33 | 使用UIView动画完善界面的交互
34 | 动画背后的CALayer基本应用
35 | CoreAnimation及开源动画框架介绍
36 | 常用代码规范和重构方式
37 | 结合UIKit分析常用App的页面结构
38 | 网络基础及请求的封装
39 | NSURLSession基础原理、组织和使用
40 | 使用系统网络架构NSURLSession加载网络数据
41 | 常用框架集成方式Submodule、Carthage和CocoaPods对比和使用
42 | 集成和使用开源网络框架
43 | iOS中的JSON解析
44 | 使用结构化的数据进行解析和展示
45 | 实现列表数据加载、解析和展示的完整流程
46 | iOS沙盒机制和文件结构
47 | 使用NSFileManager操作和管理文件
48 | iOS中的序列化NSCoding
49 | 开源存储方案对比与分析
50 | 缓存新闻列表数据及已读状态
51 | iOS中线程的基础知识及NSThread
52 | GCD的常用方法分析和使用
53 | 了解Operation、Runloop以及多线程开发总结
54 | 如何管理App中的图片下载与存储
55 | 开源图片框架接触的架构和使用
56 | 了解iOS系统的音视频框架
57 | 重构视频列表展示视频
58 | 实现简单视频播放器AVPlayer
59 | iOS消息机制NSNotification简介
60 | 使用Notification接收和处理播放状态通知
61 | 使用KVO监听和处理播放资源的状态变化
62 | CMTime及播放缓冲进度的获取和使用
63 | 使用单例模式重构播放器业务逻辑
64 | 常用App视频业务及流程浅析
65 | AutoLayout简介
66 | 使用AutoLayout实现通用ToolBar视图
67 | iOS常用布局方式选择
68 | 逻辑分辨率适配
69 | 物理分辨率适配
70 | 使用ImageAsset管理图片资源
71 | iPhone X适配
72 | iOS开发适配常用方法总结
73 | App启动过程及生命周期分析
74 | 通过App生命周期回调实现启动页
75 | 使用URL Scheme进行App间的唤起和通信
76 | Universal Link简介
77 | 常用组件化Target-Action方案
78 | 常用组件化URL Scheme方案
79 | 常用组件化Protocol-Class方案
80 | 实现简单的第三方登录和分享功能
81 | iOS中静态库的制作和使用
82 | iOS当中Framework的制作和使用
83 | OAuth和OpenID原理和使用
84 | 集成QQ SDK实现登录和分享功能
85 | iOS中常用日志和上报系统浅析
86 | 类CocoaLumberjack日志框架架构浅析
87 | Crash的类型介绍和常用收集方案
88 | 常用上报技术方案对比和分析
89 | iOS中定位和定位权限
90 | 定位功能实现和位置信息的获取
91 | iOS中推送和推送权限
92 | 使用UserNotifications实现本地推送
93 | 远程推送与APNs简介
94 | 使用UserNotifications接收远程推送
95 | iOS图标管理和动态更新
96 | iOS App Extension简介
97 | 实现Today Extension以及数据共享
98 | UITextField和UITextView
99 | 使用UITextField实现搜索条
100 | 使用UITextView实现输入框
101 | 复杂列表页实现方案及IGListKit浅析
102 | 复杂内容页展示逻辑及实现方案浅析
103 | App的签名原理和证书申请
104 | 常用iOS唯一标识符
105 | App的打包和上架流程
106 | 结课测试&结束语
本节摘要

PDF 课件和源代码下载地址:

https://gitee.com/geektime-geekbang/geektime-ios-course

登录 后留言

全部留言(10)

  • 最新
  • 精选
d.keven
你好,请问为什么使用UICollectionView复用cell的时候不需要判空了呢,从缓存池里直接取的话,不会报空指针么

作者回复: 是的,UICollectionView的dequeueReusableCellWithReuseIdentifier 比UITableView的更加方便,UITableView中这个方法是不会创建新的cell的,但是通过UICollectionView中对该方法的Discussion我们可以看到,使用这个方法,当有可用的cell时返回可用的cell,如果没有可用的则会根据之前我们设置的class自动创建一个新的返回。

2020-05-11
3
RamboPan
我感觉没显示的原因可能之一是: UICollectionViewLayout * layout = [[UICollectionViewFlowLayout alloc] init]; 因为这里用了一次向上转型。 我第一次写成了这种,所以没有布局。 UICollectionViewLayout * layout = [[UICollectionViewLayout alloc] init];

作者回复: 有可能,跟着代码自动补全容易写成UICollectionViewLayout

2019-08-06
3
!!!
我也一样,同样的代码一步步写下来,item没有显示

作者回复: 我这边新建立了个工程,照着15分50秒的代码重写了一遍,没发现问题。方便上传下你的代码么,我帮看一下。另外我再粘贴一遍我写的你也可以看看哪里不同。@interface ViewController ()<UICollectionViewDelegate, UICollectionViewDataSource> @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init]; UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:flowLayout]; collectionView.delegate = self; collectionView.dataSource = self; [collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"UICollectionViewCell"]; [self.view addSubview:collectionView]; } #pragma mark - - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ return 20; } - (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"UICollectionViewCell" forIndexPath:indexPath]; cell.backgroundColor = [UIColor redColor]; return cell; }

2019-07-27
3
邬凡
不用懒加载吗

作者回复: 没太理解具体的问题,但是对于懒加载,从UI实现上基本可以算作是代码习惯的范畴。个人感觉对于明确的UI布局,其实懒加载和直接加载区别不是很大,对于那些可变的View,我们使用懒加载可以避免不必要的开销,当然一个View的开销也不会太大,一般不使用懒加载也是在可接受的范围。而对于一些较大和较为复杂的类,我们可以使用懒加载来优化不必要的内存开销。所以对于这节课直观上没有太理解您的问题,是否可以具体的描述下~

2020-03-19
2
Geek_baozi
朱老师好,我在collectionview中的didselectedItemAtIndexPath中打印了item,row,section,row和item的值是一样的,section总是为0

作者回复: 是的 section只有一个的话,那么section一只是0. 而row和item本质上其实是一样的。那么为什么有两个呢,在视频中也简单介绍了,row是针对tableview的,到了collectionView,每一行可以有多个item布局,所以使用row不是特别到合适,所以整体到函数名都切换到了item

2019-07-28
1
海纳百川
同样的代码,没有显示item

作者回复: 能上传下代码么? 我帮看下

2019-05-17
2
1
Geek_Maggie
朱老师好,我跟着您的代码写的,但是提示SimpleApp[31996:3284248] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'UICollectionView must be initialized with a non-nil layout parameter'。找了资料也没解决,我的layout定义的是UICollectionViewFlowLayout,不为空啊,后来也设置了属性,还是不行。能不能帮我看下代码呀:https://github.com/MaggieZheng/SimpleApp 非常感谢!

作者回复: 我clone了代码,是在MZVideoCollectionViewController中么?我这边运行是没问题的,没有报错,同时点击视频tab也是可以的,看了下代码的逻辑应该也没有错误。clean下项目试试呢?

2020-02-20
3
itgou
forCellWithReuseIdentifier这个字符串参数 是自己随便写吗? 相当于是HTML中自己定义的id?

作者回复: 理论上是自己随便填,他的目的是为了在tableView内部进行cell重用的时候,区别不同的cell Class,让同种id的cell才能进行复用,达到最大的效率。当然作为key,不管针对什么样的业务逻辑考虑,还是都有一些习惯的,比如合理的命名,以及一些语言层面的优化等。

2019-06-28
一半一般
我这边导致布局没有显示的原因 GTVideoViewController *videoViewController = [[UIViewController alloc]init]; 改为 GTVideoViewController *videoViewController = [[GTVideoViewController alloc]init]; 大意了
2023-02-04
海纳百川
老师可以在讲课中说一些开发中需要注意的地方吗,比如经常遇到的一些坑
2019-05-17
收起评论