iOS 图片只拉伸两侧,不拉伸中间部位

2019-08-08  本文已影响0人  ShanJiJi

在项目开发过程中我们会遇到图片拉伸的需求,有时候会要求图片只拉伸两侧,不拉伸中间。

大致实现思路:将图片反复拉伸两次,第一次拉伸一侧,拉伸完成后将图片保存更新,然后在拉伸另一侧,最后返回拉伸结果图即可,故请参考下方代码:

/**
 图片只拉伸两侧,不拉伸中间部位

 @param imageViewSize   图片控件size
 @param originImage     要拉伸的图片
 @return 拉伸完成的图片
 */
- (UIImage *)imageStretchLeftAndRightWithContainerSize:(CGSize)imageViewSize image:(UIImage *)originImage {
    
    CGSize imageSize = originImage.size;
    CGSize bgSize = CGSizeMake(imageViewSize.width, imageViewSize.height); //imageView的宽高取整,否则会出现横竖两条缝
    
    UIImage *image = [originImage stretchableImageWithLeftCapWidth:floorf(imageSize.width * 0.8) topCapHeight:imageSize.height * 0.5];
    CGFloat tempWidth = (bgSize.width)/2 + (imageSize.width)/2;
    
    UIGraphicsBeginImageContextWithOptions(CGSizeMake((NSInteger)tempWidth, (NSInteger)bgSize.height), NO, [UIScreen mainScreen].scale);
    
    [image drawInRect:CGRectMake(0, 0, (NSInteger)tempWidth, (NSInteger)bgSize.height)];
    
    UIImage *firstStrechImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    UIImage *secondStrechImage = [firstStrechImage stretchableImageWithLeftCapWidth:floorf(imageSize.width * 0.2) topCapHeight:imageSize.height * 0.5];
    
    return secondStrechImage;
}

上一篇下一篇

猜你喜欢

热点阅读