iOS开发 如何给UIView设置(赋值)图片

解决方案

//在layerView上加图片
    UIView *layerView=[[UIView alloc] initWithFrame:CGRectMake(50, 50, 200, 200)];
    layerView.backgroundColor=[UIColor whiteColor];
    [self.view addSubview:layerView];
//要加的图片是six
    UIImage *six=[UIImage imageNamed:@"6666"];
    layerView.layer.contents=(__bridge id)six.CGImage;
    layerView.layer.contentsGravity=kCAGravityResizeAspect;

注解

首先,你必须知道的是UIView里面有一个属性是layer,专门用于视图的管理,layer又存在一个contents属性,这个属性的类型被定义为id,意味着它可以是任何类型的对象,但是事实并非如此,尽管编译器并不会给你报错,但是,实际效果,你看到的图层将是空白的。

说起原因,contents这个奇怪的表现是由MAC OS的历史原因造成的。他之所以被定义为Id类型,是因为在Mac OS系统上,这个属性对CGImage和NSImage类型的值都起作用。所以,如果你视图在IOS平台上将UIImage赋值给它,只能得到一个空白的图层。

事实上,你真正要赋值的类型应该是CGImageRef,他是一个指向CGImage的结构的指针。UIImage有一个CGImage属性,它返回一个CGImageRef。但是,问题又来了,当你想要直接把CGImageRef直接赋值给contents时,编译器又会报错!那是为什么呐?因为CGImageRef并不是一个真正的Cocoa对象,而是一个Core Foundation类型。所以需要通过bridgad关键字进行转换,如下:
  layer.contents=(__bridge id)image.CGImage;

你可能感兴趣的:(iOS开发 如何给UIView设置(赋值)图片)