1、UIView
- 设置大小、位置 frame
- 使用栈的方式管理子view:addSubView,当子view在位置上有重叠,则优先显示栈顶view
- 主要的生命周期
init
willMoveToSuperview
didMoveToSuperview
willMoveToWindow
didMoveToWindow
2、UIViewController
- 管理 view 层级
- 自带一个默认 view,是所有子view的容器
- 主要的生命周期
init
viewDidLoad
viewWillAppear
viewDidAppear
viewWillDisappear
viewDidDisappear
Dealloc
3、UIWindow
1、iPhone应用程序通常只有一个窗口,表示为一个UIWindow类的实例
2、窗口显示出来之后,您很少需要再次引用它
UIWindow* aWindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
4、UIApplication
1、UIApplication类提供了对运行在IOS设备上的app集中控制和调度的机制;
2、每一个IOS app必须有一个而且只能有一个UIApplication或者其子类的实例;
3、当程序启动的时候,会调用UIApplicationMain函数,创建UIapplication单例,该单例在整个IOS系统中就是你的App的抽象
4、能够通过shareApplication方法来调用该单例
5、UIApplication还维护了当前App打开的窗口的列表。所以,你通过它能够取到你App中任何一个View
6、app实例还实现了一个delegate,接受各种各样程序运行时的事件,比如:程序启动、低内存警告、程序崩溃等等
7、能通过openURL:方法来接受和处理一个邮件或者图片文件。如一个以Email开头的URL将能够唤起Email程序来展示这个邮件
8、注册远程消息通知,执行程序级别的复位操作
5、UINavigationController
- 通过栈管理单页面交互,如从主页进入详情页
- 通常仅展示栈顶 Controller
-
Push/Pop 操作
6、UITabBarController
管理多个 UIViewController 的切换,通过点击底部UITabBar中的TabBar来展示对应的 UIViewController
![](https://img.haomeiwen.com/i6813214/f3d3f711729613ed.png)
使用方式:
1、调用 setViewControllers 方法设置 ViewController
2、设置每个 ViewController 的 tabBarItem 的 title/image
![](https://img.haomeiwen.com/i6813214/2679758fcbefb603.png)
![](https://img.haomeiwen.com/i6813214/65acc94580504283.png)
7、UITableView 和 UITableViewCell
![](https://img.haomeiwen.com/i6813214/317a1e204daaf1b2.png)
![](https://img.haomeiwen.com/i6813214/5b510ff397ad39b3.png)
![](https://img.haomeiwen.com/i6813214/f88a021743b19abb.png)
8、UICollectionView
![](https://img.haomeiwen.com/i6813214/4b1435f5bff4a86c.png)
![](https://img.haomeiwen.com/i6813214/80ed6aafc5aa58fa.png)
![](https://img.haomeiwen.com/i6813214/22807f290feeb2ae.png)
![](https://img.haomeiwen.com/i6813214/bcce20c116e1cced.png)
9、UIScrollView
![](https://img.haomeiwen.com/i6813214/9a7e99b75391a62b.png)
![](https://img.haomeiwen.com/i6813214/742f968e8c198b0a.png)
10、基础控件
-
UILabel
-
UIImage
-
UIButton
UIButton 继承自 UIControl ,拥有了点击等交互能力,对于一般的 View,并没有继承UIControl,要实现交互需要使用 UIGestureRecognizer
-
UIGestureRecognizer
-
UIAlertView
该组件已被废弃,但可以从中学习组件的设计
-
WKWebview
注:该组件并不属于 UIKit ,而是在单独的 WebKit 库里
![](https://img.haomeiwen.com/i6813214/9f924e727e346aae.png)
![](https://img.haomeiwen.com/i6813214/4e1728fbf0c1cadf.png)
11、动画
![](https://img.haomeiwen.com/i6813214/3a0c0f4b878fe2af.png)
![](https://img.haomeiwen.com/i6813214/b3482417e08baf20.png)
![](https://img.haomeiwen.com/i6813214/4d9ffad394bd430d.png)
11、常见两种布局
![](https://img.haomeiwen.com/i6813214/8777078906d774d5.png)
![](https://img.haomeiwen.com/i6813214/a7764f07d206c1ad.png)
12、常见模式
- MVC
UITabBarController: C
tabBarItem: V
tabBarItem.title/image: M -
Delegate
一对一模式
-
Target-Action
-
KVO
一对多,类似观察者模式
网友评论