Swift

来源:互联网 发布:酒店美工工作职责 编辑:程序博客网 时间:2024/05/17 01:37

一、绘制图像

Core Graphics 也是支持绘制图片图像的,而且UIKit 中对这个做了封装,方便我们使用。

1,绘制到指定的矩形中

使用这种方式的话图片会自动进行拉伸。如果矩形比例不对,图片会变形。
原文:Swift - Core Graphics绘图框架详解4(绘制图片、图形变换)
import UIKit
 
class ViewController: UIViewController{
     
    overridefunc viewDidLoad() {
        super.viewDidLoad()
         
        letframe = CGRect(x: 30, y: 30, width: 250, height: 100)
        letcgView = CGView(frame: frame)
        self.view.addSubview(cgView)
    }
     
    overridefunc didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}
 
class CGView:UIView{
     
    overrideinit(frame: CGRect) {
        super.init(frame: frame)
        //设置背景色为透明,否则是黑色背景
        self.backgroundColor =UIColor.clear
    }
     
    requiredinit?(coder aDecoder:NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
     
    overridefunc draw(_ rect: CGRect) {
        super.draw(rect)
         
        //获取图像
        letimage = UIImage(named:"image1.jpg")
        //绘制到指定的矩形中(大小不合适会自动进行拉伸)
        image?.draw(in:self.bounds)
    }
}

2,从指定点开始绘制

这种方式图片尺寸大小、比例都不变,如果显示区域不够的话就会显示不全。
原文:Swift - Core Graphics绘图框架详解4(绘制图片、图形变换)
class CGView:UIView{
     
    overrideinit(frame: CGRect) {
        super.init(frame: frame)
        //设置背景色为透明,否则是黑色背景
        self.backgroundColor =UIColor.clear
    }
     
    requiredinit?(coder aDecoder:NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
     
    overridefunc draw(_ rect: CGRect) {
        super.draw(rect)
         
        //获取图像
        letimage = UIImage(named:"image1.jpg")
        //从指定点开始绘制
        image?.draw(at:CGPoint(x: 0, y: 0))
    }
}

二、变换(Transform)的使用

我们除了可以通过对视图 View 进行变换,实现平移旋转缩放操作外。对于绘图上下文,也是可以进行变换的。
原文:Swift - Core Graphics绘图框架详解4(绘制图片、图形变换)
(1)上面样例我们对绘图上下文做平移、缩放、旋转变换操作后,对接下来的所有绘图操作都会起作用。这里是使用图像作为演示,如果绘制其它图形同理。
(2)在对绘图上下文进行变换前我们可以先把当前默认状态保存下来,这样绘图完毕后可以还原回去。方便后续操作。
class CGView:UIView{
     
    overrideinit(frame: CGRect) {
        super.init(frame: frame)
        //设置背景色为透明,否则是黑色背景
        self.backgroundColor =UIColor.clear
    }
     
    requiredinit?(coder aDecoder:NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
     
    overridefunc draw(_ rect: CGRect) {
        super.draw(rect)
         
        //获取绘图上下文
        guardlet context =UIGraphicsGetCurrentContext()else {
            return
        }
         
        //保存初始状态
        context.saveGState()
         
        //变换1:向左向下本别平移10点
        context.translateBy(x: 10, y: 10)
        //变换2:缩放成0.1
        context.scaleBy(x: 0.1, y: 0.1)
        //变换3:旋转10度
        context.rotate(by:CGFloat.pi/18)
         
        //获取图像
        letimage = UIImage(named:"image1.jpg")
        //从指定点开始绘制
        image?.draw(at:CGPoint(x: 0, y: 0))
         
        //恢复成初始状态
        context.restoreGState()
    }
}
原创粉丝点击