在平常我们开发的时候, 我们会遇到各种各样的需求, 比如想微博那样, 把多张图片合成一张长图, 现在让我们来看看怎么把多张图片合成一张长图.
1.布置界面
2.实现代码一(绘制多张图片)
// 1.把多张绘制成一张图片
func drawImages(imageArray: [UIImage]) -> UIImage {
// 1.1.图片的宽度
var width: CGFloat = 0
// 1.2.图片的高度
var height: CGFloat = 0
// 1.3.遍历图片数组里的所有图片
for image in imageArray {
// 1.3.1.获取每一张图片的宽度
width = (image.size.width > width) ? image.size.width : width
// 1.3.2.获取每一张图片的高度, 并且相加
height += image.size.height
}
// 1.4.开始绘制图片的大小
UIGraphicsBeginImageContext(CGSize(width: width, height: height))
// 1.5.设置一个变量用来获取UIImage的Y值
var imageY: CGFloat = 0
// 1.6.遍历图片的数组
for image in imageArray {
// 1.6.1.开始绘画图片
image.drawAtPoint(CGPoint(x: 0, y: imageY))
// 1.6.2.自增每张图片的Y轴
imageY += image.size.height
}
// 1.7.获取已经绘制好的图片
let drawImage = UIGraphicsGetImageFromCurrentImageContext()
// 1.8.结束绘制图片
UIGraphicsEndImageContext()
// 1.9.返回已经绘制的图片
return drawImage
}
3.实现代码二(合成两张图片)
// 1.把两张图片绘制成一张图片
func combine(leftImage: UIImage, rightImage: UIImage) -> UIImage {
// 1.1.获取第一张图片的宽度
let width = leftImage.size.width
// 1.2.获取第一张图片的高度
let height = leftImage.size.height + rightImage.size.height
// 1.3.开始绘制图片的大小
UIGraphicsBeginImageContext(CGSize(width: width, height: height))
// 1.4.绘制第一张图片的起始点
leftImage.drawAtPoint(CGPoint(x: 0, y: 0))
// 1.5.绘制第二章图片的起始点
rightImage.drawAtPoint(CGPoint(x: 0, y: leftImage.size.height + 5))
// 1.6.获取已经绘制好的
let imageLong = UIGraphicsGetImageFromCurrentImageContext()
// 1.7.结束绘制
UIGraphicsEndImageContext()
// 1.8.返回已经绘制好的图片
return imageLong
}
4.最终效果
项目地址:http://pan.baidu.com/s/1hr1iVze 密码:voy6