iOS 画圆-刷帧
一、画圆
1.在StoryBoard拖一个View
图1.1加上画圆的背景(灰色)View2.command+N创建新文件,继承UIView
图1.2新文件DrawCircle3.StoryBoard选择灰色View,关联文件
图1.3关联文件class4.在PLDrawCircle.m内代码如下:
//1.获取上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
//2.绘图
CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, 200, 200));
//设置颜色
[[UIColor purpleColor] set];
//3.渲染
CGContextFillPath(ctx);
一个圆形就画出来了。
注:画圆还有另外两种方法
第一种:(不说了)
CG_EXTERN void CGContextAddArcToPoint(CGContextRef c, CGFloat x1, CGFloat y1,
CGFloat x2, CGFloat y2, CGFloat radius)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
第二种:
CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise)
CGContextRef:获取上下文,x,y:圆心坐标,radius:半径,startAngle:开始的弧度,endAngle:结束的弧度,clockwise: 0为顺时针,1为逆时针。
例如:
CGContextAddArc(ctx, 100, 100, 100, 0, 360 * (M_PI/180), 0);
或者
CGContextAddArc(ctx, 100, 100, 100, 0, 2 * M_PI, 0);
最终效果
图1.4最终效果二、刷帧
效果:从上往下掉(即改变圆的Y值)
图2.1最终效果1.定义要修改的属性Y
@property (nonatomic , assign) int circleY;
2.修改Y的值
self.circleY += 5;
3.修改原代码中的Y值
CGContextAddArc(ctx, 100, self.circleY, 30, 0, 360 * (M_PI/180), 0);
4.刷新界面
- (void)updateCirCleY
{
[self setNeedsDisplay];
}
5.创建CADisplayLink
CADisplayLink * display = [CADisplayLink displayLinkWithTarget:self selector:@selector(updateCirCleY)];
[display addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];