swift 快速奔跑的兔几 本节的内容是:绘画
2015-11-04 15:18
411 查看
当一个应用程序绘制图形时,它首先创建一个用于在其中绘制内容的画布,cocoa称之为图形上下文。 在创建一个图形上下文的时候,会指出上下文的大小。在此画布之外所有的绘画操作都将被忽略,不会出现在画布上。 框架矩形:用于定义视图的大小和位置的矩形。 视图可以包含多个子视图,如果一个视图位于另一个视图内部,那么当超视图移动时,它也会移动。框架矩形是相对于其超视图定义的。而边界矩形则是相对于自己的坐标空间的位置和大小。 尽管边界矩形的尺寸通常与框架矩形相同,但是也并不是必须如此。例如,如果视图被旋转,框架矩形将改变大小和位置,而边界则保持不变。 如下代码为绘制纯色矩形的栗子:
// 绘制图像 class RabbitsView: UIView { override func drawRect(rect: CGRect) { UIColor.grayColor().setFill() let pathNew = UIBezierPath(rect: self.bounds) pathNew.fill() } } let viewRect = CGRect(x: 0, y: 0, width: 100, height: 100) let newVIew = RabbitsView(frame: viewRect)
下面的栗子是圆角矩形的代码:
// 绘制图像 class RabbitsView: UIView { override func drawRect(rect: CGRect) { // 收缩边缘 let pathRect = CGRectInset(self.bounds, 1, 1) let path = UIBezierPath(roundedRect: pathRect, cornerRadius: 10) //let path = UIBezierPath(rect: self.bounds) path.lineWidth = 4 UIColor.grayColor().setFill() UIColor.blackColor().setStroke() path.fill() path.stroke() } } let viewRect = CGRect(x: 0, y: 0, width: 100, height: 100) let newVIew = RabbitsView(frame: viewRect)
下面是创建自定义路径的栗子:
// 绘制图像 class RabbitsView: UIView { override func drawRect(rect: CGRect) { let bezierPathNew = UIBezierPath() let drawingRect = CGRectInset(self.bounds, self.bounds.size.width*0.05, self.bounds.size.height*0.05) let topLeft = CGPointMake(CGRectGetMinX(drawingRect), CGRectGetMaxY(drawingRect)) let topRight = CGPointMake(CGRectGetMaxX(drawingRect), CGRectGetMaxY(drawingRect)) let bottomRight = CGPointMake(CGRectGetMaxX(drawingRect), CGRectGetMinY(drawingRect)) let bottomLeft = CGPointMake(CGRectGetMinX(drawingRect), CGRectGetMinY(drawingRect)) let center1 = CGPointMake(CGRectGetMidX(drawingRect), CGRectGetMidY(drawingRect)) bezierPathNew.moveToPoint(topLeft) bezierPathNew.addLineToPoint(topRight) bezierPathNew.addLineToPoint(bottomLeft) bezierPathNew.addCurveToPoint(bottomRight, controlPoint1: center1, controlPoint2: center1) bezierPathNew.closePath() UIColor.grayColor().setFill() UIColor.magentaColor().setStroke() bezierPathNew.fill() bezierPathNew.stroke() } } let viewRect = CGRect(x: 0, y: 0, width: 100, height: 100) let newVIew = RabbitsView(frame: viewRect)
绘制多条子路径的栗子如下:
// 绘制图像 class RabbitsView: UIView { override func drawRect(rect: CGRect) { let bezierPathNew = UIBezierPath() let drawingRect = CGRectInset(self.bounds, self.bounds.size.width*0.05, self.bounds.size.height*0.05) let topLeft = CGPointMake(CGRectGetMinX(drawingRect), CGRectGetMaxY(drawingRect)) let topRight = CGPointMake(CGRectGetMaxX(drawingRect), CGRectGetMaxY(drawingRect)) let bottomRight = CGPointMake(CGRectGetMaxX(drawingRect), CGRectGetMinY(drawingRect)) let bottomLeft = CGPointMake(CGRectGetMinX(drawingRect), CGRectGetMinY(drawingRect)) let center1 = CGPointMake(CGRectGetMidX(drawingRect), CGRectGetMidY(drawingRect)) bezierPathNew.moveToPoint(topLeft) bezierPathNew.addLineToPoint(topRight) bezierPathNew.addLineToPoint(bottomLeft) bezierPathNew.addCurveToPoint(bottomRight, controlPoint1: center1, controlPoint2: center1) bezierPathNew.closePath() let circleRect = CGRectInset(rect, rect.size.width*0.3, rect.size.height*0.3) let bezierPathSecond = UIBezierPath(ovalInRect: circleRect) let bezierPathF = UIBezierPath() bezierPathNew.appendPath(bezierPathSecond) bezierPathF.appendPath(bezierPathNew) UIColor.grayColor().setFill() UIColor.magentaColor().setStroke() bezierPathF.fill() bezierPathF.stroke() } } let viewRect = CGRect(x: 0, y: 0, width: 100, height: 100) let newVIew = RabbitsView(frame: viewRect)
呼~好多代码啊~~作为一只兔子要去蹦哒一会儿了喔~~~
相关文章推荐
- Apple Swift学习教程
- C#实现图形位置组合转换的方法
- C#实现判断图形文件格式的方法
- C#实现图形路径变换的方法
- php生成图形验证码几种方法小结
- CentOS的图形安装及初始环境设置教程
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift中定义二维数组的方法及遍历方法示例
- C#实现图形区域组合操作的方法
- php实现图形显示Ip地址的代码及注释
- Java Web开发之图形验证码的生成与使用方法
- android中图形图像处理之drawable用法分析
- Android开发之图形图像与动画(五)LayoutAnimationController详解
- 简单分析Swift语言的一些基本特征
- C++实现图形界面时钟表盘代码
- Swift与C语言指针结合使用实例
- Swift心得笔记之控制流
- C++实现二维图形的傅里叶变换
- Java在Linux下 不能处理图形的解决办法 分享