UIView简介:
UIView作为最基础的视图类,起着管理屏幕上一定区域内容展示的作用。作为各种视图的父类,提供相应的基础能力。
- 外观、渲染和动画。
- 相应区域内的事件。
- 布局和管理子视图。
布局:
- 设置自身大小(size)、位置(origin)。
- 添加视图(addSubView)。
管理:「使用栈的形式管理其子View」
- 多个View重叠时展示最后入栈的View。
- 多个View可以设置对应View的层级关系。
创建UIView:
效果图如下:
代码展示:
UIView *view = [[UIView alloc] init];
view.backgroundColor = UIColor.yellowColor;
view.frame = CGRectMake(100, 100, 100, 100);
[self.view addSubview:view];
UIView *view2 = [[UIView alloc] init];
view2.backgroundColor = UIColor.redColor;
view2.frame = CGRectMake(150, 150, 100, 100);
[self.view addSubview:view2];
UIView生命周期:
主要针对这几方法做下演示:
- - (instancetype)init
- - (void)willMoveToSuperview:(nullable UIView *)newSuperview;
- - (void)didMoveToSuperview;
- - (void)willMoveToWindow:(nullable UIWindow *)newWindow;
- - (void)didMoveToWindow;
代码展示:
//1、创建自定义View:TestView
@interface TestView : UIView
@end
@implementation TestView
-(instancetype)init{
self = [super init];
if(self){
NSLog(@"%s",__func__);
}
return self;
}
- (void)willMoveToSuperview:(nullable UIView *)newSuperview{
[super willMoveToSuperview:newSuperview];
NSLog(@"%s",__func__);
}
- (void)didMoveToSuperview{
[super didMoveToSuperview];
NSLog(@"%s",__func__);
}
- (void)willMoveToWindow:(nullable UIWindow *)newWindow{
[super willMoveToWindow: newWindow];
NSLog(@"%s",__func__);
}
- (void)didMoveToWindow{
[super didMoveToWindow];
NSLog(@"%s",__func__);
}
@end
//2、将TestView添加到屏幕
TestView *view = [[TestView alloc] init];
view.backgroundColor = UIColor.yellowColor;
view.frame = CGRectMake(100, 100, 100, 100);
[self.view addSubview:view];
//3、输入日志
2022-12-09 16:25:19.947976+0800 SampleApp[2795:105341] -[TestView init]
2022-12-09 16:25:19.948297+0800 SampleApp[2795:105341] -[TestView willMoveToSuperview:]
2022-12-09 16:25:19.948550+0800 SampleApp[2795:105341] -[TestView didMoveToSuperview]
2022-12-09 16:25:19.965908+0800 SampleApp[2795:105341] -[TestView willMoveToWindow:]
2022-12-09 16:25:19.966416+0800 SampleApp[2795:105341] -[TestView didMoveToWindow]