MST

星途 面试题库

面试题:Objective-C中UIKit框架里视图的加载与显示机制

在Objective-C的UIKit框架中,描述一下视图(UIView)从创建到加载显示到屏幕上的完整流程,包括涉及到的主要方法和关键步骤。
15.1万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试
  1. 创建视图对象
    • 使用init系列方法或initWithFrame:方法创建UIView实例。例如:
    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    
  2. 配置视图属性
    • 设置背景颜色、透明度等属性。如:
    myView.backgroundColor = [UIColor redColor];
    myView.alpha = 0.8;
    
  3. 添加子视图(可选)
    • 如果视图需要包含其他子视图,可以使用addSubview:方法。例如:
    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
    [button setTitle:@"Click" forState:UIControlStateNormal];
    [myView addSubview:button];
    
  4. 将视图添加到父视图
    • 要将视图显示在屏幕上,需要将其添加到一个已经在视图层级中的父视图。通常是添加到UIViewControllerview属性对应的视图上。
    self.view addSubview:myView;
    
  5. 视图布局
    • 自动布局(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);
    
  6. 视图加载与显示
    • 当视图被添加到视图层级并且布局完成后,UIKit框架会负责将其渲染并显示到屏幕上。在这个过程中,涉及到以下一些关键方法(虽然开发者通常不需要直接调用):
      • loadViewUIViewController的方法,用于创建视图控制器的根视图。如果没有手动创建视图,系统会在需要时调用此方法,并默认创建一个空白的UIView作为根视图。
      • viewDidLoadUIViewController的方法,在视图加载到内存后调用,开发者通常在这里进行视图的初始化配置等操作。
      • drawRect:UIView的方法,用于自定义视图的绘制。当视图需要重绘时(例如视图大小改变、首次显示等情况),系统会调用此方法。但如果使用了基于图层的绘制(如CAShapeLayer等),则可能不需要重写此方法。