ios 拉伸背景图中间图片不变四周拉伸

上图中间区域的翅膀不能变形,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;
}
可以有效解决
ios 拉伸背景图中间图片不变四周拉伸的更多相关文章
- ie8无法拉伸背景图
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Lodop背景图无图片时显示放大叉号问题
正常情况下,如果指定图片路径中,图片不存在或指定错误的路径,会因为找不到图片显示叉号,Lodop背景图如果设置了背景图宽度高度控制,显示的叉号也会被相应的放大,形成放大的模糊的图案,看起来就像是黑色边 ...
- IOS从背景图中取色
1. [代码][其他]代码 void *bitmapData; //内存空间的指针,该内存空间的大小等于图像使用RGB通道所占用的字节数. static CGContextRef Creat ...
- 【CSS】div的背景图完整图片覆盖
最初的代码: .container_first { width: 100%; height: 100%; background: url(10176581.jpg); background-size: ...
- Lodop如何设置预览后导出带背景的图,打印不带背景图
Lodop中的ADD_PRINT_SETUP_BKIMG,可以加载上背景图,该背景图在预览的时候可以显示也可以不显示,打印可以打印出来也可以不打印出来.一般套打,都是不打印背景图的,比如一些快递的快递 ...
- PS 抠图和添加背景图
1.打开需要抠的图--然后使用套索类工具,魔棒类工具,钢笔类工具均可选择需要扣的图片范围任何在Delete(如果抠反了可以进行反选Ctrl +shift+I) 2.然后把任一一张背景图直接拖到PS里面 ...
- js多张图片合成一张图,canvas(海报图,将二维码和背景图合并) -----vue
思路:vue中图片合并 首先准备好要合并的背景图,和请求后得到的二维码, canvas画图,将两张背景图和一张二维码用canvas画出来, 将canvas再转为img 注意canvas和图片的清晰图和 ...
- UI-UIImageView的图片填充方式(contentMode)_图片作为控件背景图的拉伸方式(stretch)介绍
常用图片填充方式 这里只介绍三个最常用的图片填充方式 UIViewContentModeScaleToFill模式会导致图片变形.例如: UIViewContentModeScaleAspectFit ...
- html-css控制背景图全屏拉伸不重复显示
在HTML中,当我们设置背景图,只能采用是否重叠.居中.重叠方向这几个选项 CSS3中设置 body { background:#3d71b8 url(../back_main.png); backg ...
随机推荐
- Linux 下各文件夹的含义
/bin 该目录中存放Linux的常用命令./boot 该目录默认下存放的是Linux的启动文件和内核./cdrom 该目录在刚安装系统时是空的,你可以将光驱文件系统挂在这个目录下./dev 该目录包 ...
- day2作业
购物车(两个程序)用户入口1商品信息存在文件里2已购商品,余额记录商家入口2可以添加商品,修改商品价格
- 从零开始学Python 一
一.安装 1.进入Python官网下载环境:https://www.python.org 2.根据自己的电脑选择安装版本,然后安装即可. 二.运行第一个程序 1.安装完Python,会自带一个编辑器, ...
- raid10模型比raid01模型的冗余度高
RAID10和RAID01的冗余度看起来差不多,但本质上有一定的区别. RAID10:左边损坏1块盘,右边还可以容忍一块盘损坏而不影响整体的数据;冗余度=2 RAID01:左边损坏1块盘,此时左边已经 ...
- python编程学习--Pygame - Python游戏编程入门(0)---转载
原文地址:https://www.cnblogs.com/wuzhanpeng/p/4261015.html 引言 博客刚开,想把最近学习的东西记录下来,算是一种笔记.最近打算开始学习Python,因 ...
- 上海MVP见面会
很愉快,很有收获的一次见面!
- EO bugs
定价两次-同一事件在确认前再次发生 pragma solidity ^; contract TransactionOrdering { uint256 price; address owner; ev ...
- bzoj1688
题解: 暴力枚举生哪一些病 然后判断一下即可 代码: #include<bits/stdc++.h> using namespace std; ,D=; int d,k,n,a[N][D] ...
- mvc route .html 后缀 404
<system.webServer> <validation validateIntegratedModeConfiguration="false" /&g ...
- ubuntu google chrome 忽略证书错误 -- 解决自签名证书不支持的问题
ubuntu chrome 打开自签名的证书的服务器的https时,提示 Your connection is not private. 错误代码:NET::ERR_CERT_AUTHORITY_IN ...