图片拉伸:拉伸两边,保持中间不动

271 篇文章 0 订阅
47 篇文章 0 订阅

原文地址:https://www.jianshu.com/p/9352091f3a94

 

1.想要实现一个弹框,是对某项事务的说明,效果如下

2.试过使用slicing

  • 不论你怎么调,中间的那个小尖尖都会变形或者是没有拉伸的效果,或者拉成很奇怪的东西

3.所以用代码来实现了

  • 思路 既然要保证中间不变拉伸两边,那我们先拉伸左边,然后得到的图片拿来再拉伸右边,保证两次拉伸的距离相同可以了

  • 思路图:有点丑,见谅

需要拉伸的距离就是 X = (Z - Y) / 2

4.思路有了,上代码

- (UIImage *)dc_stretchLeftAndRightWithContainerSize:(CGSize)size
{
    CGSize imageSize = self.size;
    CGSize bgSize = size;
    
    //1.第一次拉伸右边 保护左边
    UIImage *image = [self stretchableImageWithLeftCapWidth:imageSize.width *0.8 topCapHeight:imageSize.height * 0.5];
    
    //第一次拉伸的距离之后图片总宽度
    CGFloat tempWidth = (bgSize.width)/2 + imageSize.width/2;
    
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(tempWidth, imageSize.height), NO, [UIScreen mainScreen].scale);
    
    [image drawInRect:CGRectMake(0, 0, tempWidth, bgSize.height)];
    
    //拿到拉伸过的图片
    UIImage *firstStrechImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    //2.第二次拉伸左边 保护右边
    UIImage *secondStrechImage = [firstStrechImage stretchableImageWithLeftCapWidth:firstStrechImage.size.width *0.1 topCapHeight:firstStrechImage.size.height*0.5];
    
    return secondStrechImage;
}

5.PS:这被我弄成了一个图片的分类,方便使用

我是看了这篇文章有的思路,需要的同学可以看看,感谢他

http://www.jianshu.com/p/bb3300cf15c4

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值