解决方案
//在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;