IOS UI画线
2015-09-27 13:04
489 查看
首先先删除故事板里面默认的 viewcontroller文件,添加一个Navigation controller文件
插入一个Table View Cell
在拖入一个viewcontroller
按住control点击刚插入的Table View Cell 拖入viewcontroller选择push
新建UIView类文件
然后在故事版中选择刚才拖入的viewcontroller属性 选择这个类
在类中先写
画线代码
![](http://img.blog.csdn.net/20150929212535250)
如图
添加矩形
添加viewcontroller和类文件和上面一样
绑定类后
在文件中同样要先写一下
之后在drawRect函数中写
![](http://img.blog.csdn.net/20150929213506095)
绘制园
创建类之前步奏同上,绘制园有两种方法,一种是通过画弧完成,另一种是通过绘制一个矩形,与这个矩形外切的园即所得。
![](http://img.blog.csdn.net/20150929213544760)
绘制一张图片
同样要添加类,同以上步奏
接着在Images.xcassets 里面放一张图片,这里这张图片的名字为“2”
在类文件中添加
此时初始化比之前多了一行。
在调整的时候需要进行存储与释放,否则会影响到后面要绘制的元素。取消注释可以看到差别。
![](http://img.blog.csdn.net/20150929213614336)
最后是绘制画板
同样添加类与初始化之前都一样
在类中定义路径
drawRect代码如下
![](http://img.blog.csdn.net/20150929213645425)
完整的界面如下
插入一个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) }
完整的界面如下
相关文章推荐
- 检测到有潜在危险的 Request.Form 值
- iOS开发UI篇—xib的简单使用
- 【UIKit-110-1】#import <UIKit/UITableView.h> 基础创建
- Auto Layout界面自动布局 (Interface Builder布局)
- Longest Consecutive Sequence
- Qt Quick 布局演示
- SpriteBuilder中锚点的一般用法
- SpriteBuilder中锚点的一般用法
- SpriteBuilder中锚点的一般用法
- Git Hub 上面的pull request解释
- iOS --- UICollectionView中使用reloadItemsAtIndexPaths进行局部cell更新
- UCGUI编程三:背景窗口重绘
- 【UIKit-93-2】#import <UIKit/UIScrollView.h>
- UGUI 新手指引
- Java中GUI相关控件常见问题详解
- iOS7极限编程 第一部分 第二章 世界是扁平化的:新的UI范式 (译)
- 第11章:最长公共子序列(LCS:Longest Common Subsequence)
- *LeetCode-N-Queens
- 从为什么String=String谈到StringBuilder和StringBuffer
- 【UIKit-93-1】#import <UIKit/UIScrollView.h>