美文网首页
iOS 图片只拉伸两侧,不拉伸中间部位

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

作者: ShanJiJi | 来源:发表于2019-08-08 17:31 被阅读0次

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

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

    /**
     图片只拉伸两侧,不拉伸中间部位
    
     @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;
    }
    
    

    相关文章

      网友评论

          本文标题:iOS 图片只拉伸两侧,不拉伸中间部位

          本文链接:https://www.haomeiwen.com/subject/ouqfjctx.html