UIKit框架
什么是框架?
简单来说,就是其他攻城狮开发完成的代码,包括库文件、头文件等,这些文件中的API我们可以拿过来使用
UIKit框架是干什么的?
提供创建基于触摸用户界面的类
包括:屏幕上的绘制机制、捕捉事件、管理组织复杂的UI元素
UIKit中最重要的两个类?
1)UIView:所有可以看到的组件/控件/视图的父类
如:UIButton按钮、UILabel标签、UITextField输入框、UIImageView图片视图等
2)UIViewController:所有控制器的父类,负责管理一个页面
如:UIViewController基本页面、UITableViewController表格视图页面等
这两个父类都继承自UIResponder,称作响应者(以后介绍)
UIResponder继承自NSObject
控制器的基本使用
在MVC设计模式中,控制器负责视图与模型数据的关联,完成页面的逻辑功能
UIViewController中包含一个非常重要的属性:页面中的视图
@property(nonatomic, retain) UIView *view
代码创建控制器:
UIViewController * vc = [[UIViewController alloc] init];
控制器对象vc,即一个App中的页面,包含一个白色的空白view
设置App的初始页面(空模板下):
在AppDelegate文件中找到以下方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
在注释位置添加代码:
创建控制器对象,并设置其view的背景颜色
设置window对象的根控制器(初始页面)为新建的控制器
详细解释以下 空项目启动 的代码过程:
1)创建一个UIWindow对象,其大小为当前屏幕的大小
2)创建一个控制器
3)设置window对象的根控制器(初始页面)
4)设置window对象为key window 并显示
什么是key window?
即主窗口,同一时刻只有一个窗口是主窗口
主窗口能够接收各种事件,如触摸事件、运动事件、键盘事件等。
UIWindow的父类是UIView
控制器子类
对于UIKit中的使用,一是拿过来直接使用,二是实现子类
实现子类的好处是:将操作封装(高内聚低耦合)
控制器子类:
如UIViewController子类AMViewController
控制器中的几个应重写方法:
init方法:控制器对象被创建后初始化时的调用
该方法中应当先调用父类方法
通常在该方法中添加与视图无关的操作
viewDidLoad方法:控制器对象管理的view被加载时调用
该方法中应当先调用父类方法
通常在该方法中添加与视图相关的操作
- (void) viewDidLoad { [super ViewDidLoad]; // Do any additional setup after loading the view. }
UIView的基本属性
//背景颜色 @property(nonatomic, copy) UIColor *backgroundColor //透明度 @property(nonatomic) CGFloat alpha //视图对象的ID @property(nonatomic) NSInteger tag //是否隐藏 @property(nonatomic, getter=isHidden) BOOL hidden //所在window @property(nonatomic, readonly) UIWindow *window
UIView的子视图
UIView是容器对象:
每一个UIView都是一个容器,能容纳其他UIView。
容纳其他UIView的UIView我们称之为父控件,被容纳的UIView我们称之为子控件。
子控件的存在依赖于父控件的存在,子控件的位置等属性是以父控件作为基准的。
相关属性:
@property(nonatomic, readonly) UIView *superview @property(nonatomic, readonly, copy) NSArray *subviews
添加子视图:
subview在显示到屏幕上时,是位于superview上层的 ,添加的方法:
- (void)addSubview:(UIView *)view
同一个view的subview是按照加入的顺序显示对应层的,越晚加入的subview显示在越上层,反之也是如此
用superview可以直接管理subview的层 。相关方法:
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview - (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview - (void)bringSubviewToFront:(UIView *)view - (void)sendSubviewToBack:(UIView *)view - (void)removeFromSuperview - (UIView *)viewWithTag:(NSInteger)tag
子视图的位置及尺寸:
UIView对象包含以下与位置及尺寸相关的属性:
@property(nonatomic) CGRect frame // frame属性(以父视图为坐标原点) @property(nonatomic) CGRect bounds // bounds属性(以自身为坐标原点) @property(nonatomic) CGPoint center // center属性(以俯视图为坐标原点) @property(nonatomic) CGAffineTransform transform // 形变属性
视图的坐标系:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。