面试题答案
一键面试- 创建视图对象
- 使用
init
系列方法或initWithFrame:
方法创建UIView
实例。例如:
UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
- 使用
- 配置视图属性
- 设置背景颜色、透明度等属性。如:
myView.backgroundColor = [UIColor redColor]; myView.alpha = 0.8;
- 添加子视图(可选)
- 如果视图需要包含其他子视图,可以使用
addSubview:
方法。例如:
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; [button setTitle:@"Click" forState:UIControlStateNormal]; [myView addSubview:button];
- 如果视图需要包含其他子视图,可以使用
- 将视图添加到父视图
- 要将视图显示在屏幕上,需要将其添加到一个已经在视图层级中的父视图。通常是添加到
UIViewController
的view
属性对应的视图上。
self.view addSubview:myView;
- 要将视图显示在屏幕上,需要将其添加到一个已经在视图层级中的父视图。通常是添加到
- 视图布局
- 自动布局(iOS 6.0+):
- 使用
NSLayoutConstraint
类来定义约束。例如,要将一个按钮水平居中在其父视图中:
[NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:myView attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0];
- 然后通过
addConstraints:
等方法将约束添加到视图或其父视图。
- 使用
- frame布局:通过设置视图的
frame
属性来确定其位置和大小。在添加到父视图之前或之后设置都可以,如:
button.frame = CGRectMake(50, 50, 80, 40);
- 自动布局(iOS 6.0+):
- 视图加载与显示
- 当视图被添加到视图层级并且布局完成后,
UIKit
框架会负责将其渲染并显示到屏幕上。在这个过程中,涉及到以下一些关键方法(虽然开发者通常不需要直接调用):loadView
:UIViewController
的方法,用于创建视图控制器的根视图。如果没有手动创建视图,系统会在需要时调用此方法,并默认创建一个空白的UIView
作为根视图。viewDidLoad
:UIViewController
的方法,在视图加载到内存后调用,开发者通常在这里进行视图的初始化配置等操作。drawRect:
:UIView
的方法,用于自定义视图的绘制。当视图需要重绘时(例如视图大小改变、首次显示等情况),系统会调用此方法。但如果使用了基于图层的绘制(如CAShapeLayer
等),则可能不需要重写此方法。
- 当视图被添加到视图层级并且布局完成后,