关于CALayer 中的contents(图片) 拉伸

 最近做有关 发送图片的功能。微信显示的图片 使用气泡遮罩出来的。。而且图片尺寸也不止一种。

既然UIImagView 可以拉伸图片,设置遮罩的CALayer 的content 可不可以。

关键CALayer这两个属性:

contentsCenter  跟 图片拉伸原理相同 不过是根据比例

contentsGravity 设置拉伸方法

contentsScale  内容的分变率。== img.scale  应该设置等于 content 图片的分辨率。之前忘了设置这个。坑了好久。

具体可以搜下这三个资料;

上代码:

    mask_pic.contents = (__bridge id)[maskImg CGImage];
    mask_pic.frame = CGRectMake(0, 0, _imgView.width,_imgView.height);
    
    maskImg = [UIImage imageNamed:@"chatBg_left"];
    mask_pic.contentsCenter = CGRectMake(18.0/maskImg.size.width,
                                                 24.0/maskImg.size.height,
                                                 (maskImg.size.width - (10.0 +18.0))/maskImg.size.width ,
                                                 (maskImg.size.height - (24.0 + 10.0))/maskImg.size.height);


    //拉伸
    mask_pic.contentsGravity = kCAGravityResize;
    mask_pic.contentsScale = maskImg.scale;
    _imgView.backgroundColor = [UIColor blackColor];
    _imgView.layer.mask = mask_pic; 

参考:https://github.com/AttackOnDobby/iOS-Core-Animation-Advanced-Techniques/blob/master/2-%E5%AF%84%E5%AE%BF%E5%9B%BE/%E5%AF%84%E5%AE%BF%E5%9B%BE.md

http://www.mgenware.com/blog/?p=489

posted @ 2014-11-06 14:53  hhhker  阅读(1245)  评论(0编辑  收藏  举报