关于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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值