c语言 居中显示图片,ios 拉伸背景图中间图片不变四周拉伸

4c82c55b917e5e3074d00cdd8c63ad39.png

上图中间区域的翅膀不能变形,Android的点九能很好的解决,但是iOS的stretchableImageWithLeftCapWidth没法一次性指定拉伸区域,最后发现https://www.jianshu.com/p/bb3300cf15c4 的解决思路,然后修改了下,/**

拉伸图片 -- 拉伸四周保持中间大图不变形

@param size 所需要设置的大小

@param baseImage 原图

@return 拉伸好的图片

*/

- (UIImage *)dc_stretchLeftAndRightWithContainerSize:(CGSize)size baseImage:(UIImage *)baseImage

{

// 248 中间图片的宽  273 中间图片的高

CGFloat top = (baseImage.size.height - 248)/2;

CGFloat left = (baseImage.size.width - 273)/2;

CGSize imageSize = baseImage.size;

CGSize bgSize = size;

//1.第一次拉伸下面 保护上面

UIImage *image = [baseImage stretchableImageWithLeftCapWidth:left+273 topCapHeight:top+248];

//第一次拉伸的距离之后图片总宽度

CGFloat tempWidth = (bgSize.width)/2 + imageSize.width/2;

CGFloat tempHeight = (bgSize.height)/2 + imageSize.height/2;

UIGraphicsBeginImageContextWithOptions(CGSizeMake(image.size.width, tempHeight), NO, [UIScreen mainScreen].scale);

[image drawInRect:CGRectMake(0, 0, tempWidth, tempHeight)];

//拿到拉伸过的图片

UIImage *firstStrechImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

//2.第二次拉伸上面 保护下面

UIImage *secondStrechImage = [firstStrechImage stretchableImageWithLeftCapWidth:left topCapHeight:top];

return secondStrechImage;

}

可以有效解决

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值