IOS UI画线

来源:互联网 发布:mac hosts 修改 编辑:程序博客网 时间:2024/05/16 17:39

首先先删除故事板里面默认的 viewcontroller文件,添加一个Navigation controller文件

插入一个Table View Cell
在拖入一个viewcontroller
按住control点击刚插入的Table View Cell 拖入viewcontroller选择push

新建UIView类文件
然后在故事版中选择刚才拖入的viewcontroller属性 选择这个类

在类中先写

required init(coder aDecoder: NSCoder) {        super.init(coder: aDecoder)    }

画线代码

override func drawRect(rect: CGRect) {        // Drawing code        var context = UIGraphicsGetCurrentContext()        CGContextMoveToPoint(context, 100, 100)        CGContextAddLineToPoint(context, 150, 100)        CGContextMoveToPoint(context, 200, 100)        CGContextAddLineToPoint(context, 200, 200)        CGContextSetRGBStrokeColor(context, 1, 0, 1, 1) //颜色        CGContextSetLineWidth(context, 5)  //宽度        CGContextStrokePath(context)    }

这里写图片描述

如图

添加矩形

添加viewcontroller和类文件和上面一样

绑定类后

在文件中同样要先写一下

    required init(coder aDecoder: NSCoder) {        super.init(coder: aDecoder)    }

之后在drawRect函数中写

override func drawRect(rect: CGRect) {        var context = UIGraphicsGetCurrentContext()        CGContextAddRect(context, CGRect(x: 100, y: 100, width: 100, height: 100))//添加一个矩形        CGContextSetRGBFillColor(context, 1, 0, 0, 1)//颜色        CGContextFillPath(context)//填充        CGContextSetLineWidth(context, 5)//线条宽度        CGContextSetRGBStrokeColor(context, 1, 1, 0, 1)//填充颜色        CGContextStrokeRect(context, CGRect(x: 100, y: 100, width: 100, height: 100))        // Drawing code    }

这里写图片描述
绘制园
创建类之前步奏同上,绘制园有两种方法,一种是通过画弧完成,另一种是通过绘制一个矩形,与这个矩形外切的园即所得。

    override func drawRect(rect: CGRect) {        // Drawing code        //第一种绘制方法        //==================================================        var context = UIGraphicsGetCurrentContext()//        CGContextAddArc(context, 100, 100, 50, 0, 3.14, 0)        CGContextAddArc(context, 200, 200, 100, 0, 3.14*2, 0)  //画一条弧 x,y,半径,起始角度,终止角度,顺时针0逆时针1        CGContextSetLineWidth(context, 10)   //线条宽度        CGContextStrokePath(context)        //=============填充颜色        CGContextAddArc(context, 200, 200, 100, 0, 6.28, 0)        CGContextSetRGBFillColor(context, 1, 1, 0, 1)        CGContextFillPath(context)        //第二种绘制方法        //==================================================        //椭圆形绘制方法 CGRect中放正方形就是圆形,矩形就是椭圆形        CGContextAddEllipseInRect(context, CGRect(x: 50, y: 350, width: 200, height: 100))        CGContextStrokePath(context)        CGContextAddEllipseInRect(context, CGRect(x: 200, y: 500, width: 100, height: 100))        CGContextStrokePath(context)    }}

这里写图片描述
绘制一张图片
同样要添加类,同以上步奏

接着在Images.xcassets 里面放一张图片,这里这张图片的名字为“2”

在类文件中添加

    required init(coder aDecoder: NSCoder) {        super.init(coder: aDecoder)        UiImage = UIImage(named: "2")!.CGImage    }    var UiImage:CGImageRef?

此时初始化比之前多了一行。

在调整的时候需要进行存储与释放,否则会影响到后面要绘制的元素。取消注释可以看到差别。

    override func drawRect(rect: CGRect) {        // Drawing code        var context = UIGraphicsGetCurrentContext()        //=====================        CGContextSaveGState(context)        //状态的存储        CGContextTranslateCTM(context, 10, 400)     //状态的调整        CGContextScaleCTM(context, 1, -1)           //缩放        CGContextDrawImage(context, CGRect(x: 50, y: -100, width: 200, height: 350),UiImage )        CGContextRestoreGState(context)         //状态恢复        //存储与恢复是为了保证不会因为对context的调整影响到后面的绘制某一个元素的时候影响其他元素,只要有调整,在调整前要保存,调整后释放        //=======================//        CGContextStrokeRect(context, CGRect(x: 100, y: 100, width: 100, height: 100))    }

这里写图片描述

最后是绘制画板

同样添加类与初始化之前都一样

在类中定义路径

    var path = CGPathCreateMutable()    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {        var p = (touches as NSSet).anyObject()?.locationInView(self)        CGPathMoveToPoint(path, nil, p!.x, p!.y)    }//触摸开始    override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {        var p = (touches as NSSet).anyObject()?.locationInView(self)        CGPathAddLineToPoint(path, nil, p!.x, p!.y)        setNeedsDisplay()    }//触摸移动

drawRect代码如下

override func drawRect(rect: CGRect) {//        var context = UIGraphicsGetCurrentContext()//        //        var path = CGPathCreateMutable()    //创建存储路径//        CGPathMoveToPoint(path, nil, 200, 200)//起始点//        CGPathAddLineToPoint(path, nil, 100, 100)//移动点//        //        CGContextAddPath(context, path)//        CGContextStrokePath(context)        // Drawing code        var context = UIGraphicsGetCurrentContext()        CGContextAddPath(context, path)        CGContextStrokePath(context)    }

这里写图片描述

完整的界面如下

这里写图片描述

0 0