最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
ios开发之在UIView上使用自定义曲线绘制复杂图形(贝塞尔曲线)
时间:2015-11-18 编辑:简简单单 来源:一聚教程网
有时我们需要绘制一个不规则路径的图形,里面可能包含直线或者曲线,这时就可以使用 UIBezierPath 来实现。
UIBezierPath类可以表示任何能够用Bezier曲线定义的形状,我们可以创建自己的自定义曲线。完成操作后,可以像其他路径一样,使用所得到的UIBezierPath对象进行填充和描边。
1,下面演示使用UIBezierPath绘制一个不规则图形:
(1)画笔移动到矩形区域左上角
(2)从笔的当前位置向右上角的点画一条直线
(3)从笔的当前位置向左下角的点画一条直线
(4)从笔的当前位置向右下角画一条曲线,曲线弯曲程度的两个控制点是矩形区域的中点
(5)从笔的当前位置向左上角的点绘制一条直线,使路径闭合
2,效果图如下:
3,代码如下:
代码如下 | 复制代码 |
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let viewRect = CGRect(x: 50, y: 50, width: 100, height: 100) let view1 = MyCanvas(frame: viewRect) self.view.addSubview(view1) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } class MyCanvas: UIView { override init(frame: CGRect) { super.init(frame: frame) //把背景色设为透明 self.backgroundColor = UIColor.clearColor() } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func drawRect(rect: CGRect) { let bezierPath = UIBezierPath() //创建一个矩形,它的所有边都内缩5% let drawingRect = CGRectInset(self.bounds, self.bounds.size.width * 0.05, self.bounds.size.height * 0.05) //确定组成绘画的点 let topLeft = CGPointMake(CGRectGetMinX(drawingRect), CGRectGetMinY(drawingRect)) let topRight = CGPointMake(CGRectGetMaxX(drawingRect), CGRectGetMinY(drawingRect)) let bottomRight = CGPointMake(CGRectGetMaxX(drawingRect), CGRectGetMaxY(drawingRect)) let bottomLeft = CGPointMake(CGRectGetMinX(drawingRect), CGRectGetMaxY(drawingRect)) let center = CGPointMake(CGRectGetMidX(drawingRect), CGRectGetMidY(drawingRect)) //开始绘制 bezierPath.moveToPoint(topLeft) bezierPath.addLineToPoint(topRight) bezierPath.addLineToPoint(bottomLeft) bezierPath.addCurveToPoint(bottomRight, controlPoint1: center, controlPoint2: center) //使路径闭合,结束绘制 bezierPath.closePath() //设定颜色,并绘制它们 UIColor.greenColor().setFill() UIColor.blackColor().setStroke() bezierPath.fill() bezierPath.stroke() } } |
相关文章
- sora软件价格介绍 02-22
- sora官网入口地址一览 02-22
- Sora生成的视频使用教程 02-22
- 《梦幻西游》元宵灯谜线索答案大全2024 02-22
- 《原神》有朋自远方来第一天通关攻略 02-22
- 《苏醒之路》四个结局达成攻略 02-22