最近做项目需要做一个多状态展示,并且状态不存在时,图标自动移位,保证图标排列整齐。一开始看到这个想到的是做一组UIImageView放到Array里 ,根据图标有无向UIImageView数组添加图片,由于布局里是手写NSLayout的,还有其他的控件,调整了好久,感觉无望。。。。(老工程不能改动太多底层的,内心纠结啊!!!)由于原来的布局里有一个状态的UIImageView,于是乎就有一个念头,如果可以把那些图标重新组合生成新的图标不就可以不动布局了。找API文档看到UIImage有一个drawInRect的方法,百度一下,直接找到了图片拼接代码,拿过来一用感觉不太对劲,图片失真了。。。(也是醉了),继续深挖。发现是UIGraphicsBeginImageContext(offScreenSize);    捣的鬼,换成UIGraphicsBeginImageContextWithOptions(offScreenSize, NO, [UIScreen mainScreen].scale);问题解决。附上处理后的代码:

//leftImage:左侧图片 rightImage:右侧图片 margin:两者间隔
- (UIImage *) combineWithLeftImg:(UIImage*)leftImage rightImg:(UIImage*)rightImage withMargin:(NSInteger)margin{if (rightImage == nil) {return leftImage;}CGFloat width = leftImage.size.width + rightImage.size.width + margin;CGFloat height = leftImage.size.height;CGSize offScreenSize = CGSizeMake(width, height);// UIGraphicsBeginImageContext(offScreenSize);用这个重绘图片会模糊UIGraphicsBeginImageContextWithOptions(offScreenSize, NO, [UIScreen mainScreen].scale);CGRect rectL = CGRectMake(0, 0, leftImage.size.width, height);[leftImage drawInRect:rectL];CGRect rectR = CGRectMake(rectL.origin.x + leftImage.size.width + margin, 0, rightImage.size.width, height);[rightImage drawInRect:rectR];UIImage* imagez = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();return imagez;
}

更多内容请关注 我的博客

iOS开发 UIImage图片拼接相关推荐

  1. iOS开发 - UIImage加载内存性能比较

    + (UIImage )imageNamed:(NSString )name + (UIImage )imageNamed:(NSString )name 这种加载会有缓存,图片所占用的内存会一直停留 ...

  2. iOS开发UI篇—transframe属性(形变)

    iOS开发UI篇-transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...

  3. iOS开发——手势识别器(用手势实现图片旋转和缩小放大)

    iOS开发中,除了有关触摸的这组方法来控制用户的手指触控外,还可以用UIGestureRecognize的衍生类来进行判断,方便了开发. UIGestureRecognize的子类类别有以下几种: U ...

  4. iOS开发系列--让你的应用“动”起来

    概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画 ...

  5. iOS开发-照片选择

    本来想做个注册登录的表单的,想想还是先做个简单的头像选择,一般情况下不管是内部管理系统还是面向公众的互联网公司,注册登录是免不了的,用户头像上传是免不了的,尤其是企业用户,上传了自己的图片才感觉自己买 ...

  6. iOS开发系列--UITableView全面解析

    iOS开发系列--UITableView全面解析 2014-08-23 23:20 by KenshinCui, 2202 阅读, 18 评论, 收藏,  编辑 --UIKit之UITableView ...

  7. iOS开发-面试总结(九)

    iOS面试指导 一 经过本人最近的面试和对面试资料的一些汇总,准备记录这些面试题,以便ios开发工程师找工作复习之用,本人希望有面试经验的同学能和我同时完成这个模块,先出面试题,然后会放出答案. 1. ...

  8. iOS开发UI篇—实现UITableview控件数据刷新

    iOS开发UI篇-实现UITableview控件数据刷新 一.项目文件结构和plist文件 二.实现效果 1.说明:这是一个英雄展示界面,点击选中行,可以修改改行英雄的名称(完成数据刷新的操作). 运 ...

  9. iOS开发UI篇—UITabBarController简单介绍

    iOS开发UI篇-UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...

最新文章

  1. spark学习13(spark RDD)
  2. HarmonyOS之常用组件Text的功能和使用
  3. java定义数组_java中数组的三种定义方式_java中数组的定义及使用方法(推荐)...
  4. 阿里巴巴《rocketmq开发指南》_如何看待阿里巴巴孤尽觉得Java是世界上最好的语言?...
  5. Javascript:通过服务器相对路径下载文件到本地
  6. Java同步数据结构之Collection-Queue
  7. opencv绘制矩形框
  8. excel 自定义参数(text函数)
  9. excel转word后表格超出页面_原来Excel和Word还能这样互转,完全不会格式错乱!
  10. python右对齐 数字,python怎么让数字右对齐
  11. 仰望星空不如脚踏实地
  12. Xdebug、Zend bugger与Zend Optmizer不兼容问题
  13. 哥谭第一季/全集Gotham迅雷下载
  14. 互联网地图栅格比例尺(3857,4326)
  15. OSChina 周四乱弹 —— 妹子上班迟到的原因
  16. 从《生活计划》实践,剖析自我执行力
  17. 语音识别ASR和NLP有什么区别?
  18. net开发过程中,错误集锦
  19. 滚蛋吧小广告!我现在用命令行解压缩;当哥白尼遇上人工智能;一份傲娇的深度学习技术清单;一个视频尽览旷视20项前沿技术 | ShowMeAI资讯日报
  20. 如何添加共享计算机用户,如何正确设置共享

热门文章

  1. HTML5期末大作业:仿阴阳师游戏网站设计——仿阴阳师游戏官网首页(1页) 学生动手游页设计模板下载 网游大学生HTML网页制作作品 简单游戏网页设计成品 dreamweaver学生网站模板
  2. android升级系统版本6,一加6升级安卓10.0之后,旧旗舰依旧流畅
  3. 山海经2服务器维护时间,服务器2月7日停止运营公告
  4. 【『茴』的四种写法】 C++11 map和unordered_map遍历方法
  5. python和php什么关系,什么是python?与PHP有什么区别?
  6. 微信小程序授权登录获取用户信息详解
  7. 5个值得推荐的英语学习网站及1个英语学习App
  8. 焊接机器人结构设计(毕业论文52页+CAD图纸+CAXA图纸+开题报告+任务书)
  9. JAVA数组去重方法
  10. Android 开源USB读写demo,实现串口通信