iOS面试题

2. iOS面试题UI篇

2020-11-25  本文已影响0人  越天高

Size Classes 具体使用

UIViewCALayer是什么关系?

- (class) layerClass {

  // 使某个UIView的子类使用GL来进行绘制

 return ([CAEAGLLayer class]);

}
grayCover = [[CALayer alloc]init];
grayCover.backgroudColor = [[UIColor blackColor]colorWithAlphaComponent:0.2].CGColor;
[self.layer addSubLayer:grayCover];

loadView的作用?

• 看懂控制器view创建的这个图就行


ViewControllerfiview olft.png

IBOutlet连出来的视图属性为什么可以被设置成weak?

IBUser Defined Runtime Attributes如何使用?

沙盒目录结构是怎样的?各自用于那些场景?

pushViewControllerpresentViewController有什么区别

请简述UITableView的复用机制

如何高性能的给 UIImageView 加个圆角?

self.view.layer.cornerRadius = 5;
 self.view.layer.masksToBounds = YES;
- (UIImage *)circleImage

{

  // NO代表透明

 UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0);

  // 获得上下文

 CGContextRef ctx = UIGraphicsGetCurrentContext();

  // 添加一个圆

 CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);

 CGContextAddEllipseInRect(ctx, rect);

  // 裁剪

 CGContextClip(ctx);

  // 将图片画上去

 [self drawInRect:rect];

 UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

  // 关闭上下文

 UIGraphicsEndImageContext();

 return image;

}
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];

imageView.center = CGPointMake(200, 300);

UIImage *anotherImage = [UIImage imageNamed:@"image"];

UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, 1.0);

[[UIBezierPath bezierPathWithRoundedRect:imageView.bounds

 cornerRadius:50] addClip];

[anotherImage drawInRect:imageView.bounds];

imageView.image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

[self.view addSubview:imageView];

使用drawRect有什么影响?

描述下SDWebImage里面给UIImageView加载图片的逻辑

设计个简单的图片内存缓存器

控制器的生命周期

// 自定义控制器view,这个方法只有实现了才会执行

- (void)loadView

{

 self.view = [[UIView alloc] init];

 self.view.backgroundColor = [UIColor orangeColor];

}

// view是懒加载,只要view加载完毕就调用这个方法

- (void)viewDidLoad

{

 [super viewDidLoad];

 NSLog(@"%s",__func__);

}

// view即将显示

- (void)viewWillAppear:(BOOL)animated

{

 [super viewWillAppear:animated];

 NSLog(@"%s",__func__);

}

// view即将开始布局子控件

- (void)viewWillLayoutSubviews

{

 [super viewWillLayoutSubviews];

 NSLog(@"%s",__func__);

}

// view已经完成子控件的布局

- (void)viewDidLayoutSubviews

{

 [super viewDidLayoutSubviews];

 NSLog(@"%s",__func__);

}

// view已经出现

- (void)viewDidAppear:(BOOL)animated

{

 [super viewDidAppear:animated];

 NSLog(@"%s",__func__);

}

// view即将消失

- (void)viewWillDisappear:(BOOL)animated

{

 [super viewWillDisappear:animated];

 NSLog(@"%s",__func__);

}

// view已经消失- (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; NSLog(@"%s",__func__); } // 收到内存警告- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; NSLog(@"%s",__func__); } // 方法已过期,即将销毁view- (void)viewWillUnload { } // 方法已过期,已经销毁view- (void)viewDidUnload {}

你是怎么封装一个view

/**

* 纯代码初始化控件时一定会走这个方法

 */

- (instancetype)initWithFrame:(CGRect)frame

{

 if(self = [super initWithFrame:frame])

 {

 [self setup];

 }

  return  self;

}

- (id)initWithCoder:(NSCoder *)aDecoder

{

 if(self = [super initWithCoder:aDecoder])

 {

 [self setup];

 }

  return  self;

}

- (void)setup

{

  // 初始化代码

}

如何进行iOS67的适配

// iOS版本为7.0以上(包含7.0)

define iOS7 ([[UIDevice currentDevice].systemVersion doubleValue]>=7.0)

如何渲染UILabel的文字?

UIScrollViewcontentSize能否在viewDidLoad中设置?

-(void)viewDidLayoutSubviews;

触摸事件的传递

* 如何找到最合适处理事件的控件:

事件响应者链

◦ 如果当前这个view不是控制器的view,那么父控件就是上一个响应者


Application.png

如何实现类似QQ的三角形头像

核心动画里包含什么?

如何使用核心动画?

上一篇 下一篇

猜你喜欢

热点阅读