苹果开发 笔记(47) 圆

原创 2015年07月10日 12:16:55

今天将画圆和动画练习联系在一起,一起加强这方面的练习。在画圆的时候,发现一些小瑕疵。今天主要想弄一个圆周运动,这个其实在flash做得很多。今天尝试一下用oc来练习。
首先准备一些工作,前提是画一个填充圆和画一个边框圆形。

第一步:创建Ball.h 和Ball.m
第二步:创建Circle.h和Circle.m

这里写图片描述

#import "Ball.h"

@implementation Ball



- (void)drawRect:(CGRect)rect
{

  //画一个圆
  CGContextRef  context = UIGraphicsGetCurrentContext();//拿到上下文
  CGRect  cRect = CGRectMake(0, 0, 30, 30);
  CGContextSetLineWidth(context, 2); //设置线条粗细
  CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor);
  CGContextAddEllipseInRect(context, cRect);//绘制一个圆
  CGContextFillPath(context);//关键一步填充
}


@end

同样Circle里面画一个160x160大小的圆。

#import "Circle.h"

@implementation Circle

- (void)drawRect:(CGRect)rect
{

    //画一个圆
    CGContextRef  context = UIGraphicsGetCurrentContext();//拿到上下文
    CGRect  cRect = CGRectMake(0, 0, 160, 160);
    CGContextSetLineWidth(context, 1); //设置线条粗细
    CGContextSetStrokeColorWithColor(context, [UIColor orangeColor].CGColor);
    CGContextAddEllipseInRect(context, cRect);//绘制一个圆
    CGContextStrokePath(context);
}

@end

在viewController.m添加如下代码

//
//  ViewController.m
//  donghua_example
//
//  Copyright (c) 2015年 xiashu. All rights reserved.
//

#import "ViewController.h"
#import "Ball.h"
#import "Circle.h"

@interface ViewController ()
@property (nonatomic,strong) Ball *ball;
@property (nonatomic,strong) Circle *circle;
@property (nonatomic,strong) NSTimer *timer;
@property (nonatomic) CGFloat angle;//角度
@property (nonatomic) CGPoint point;//坐标点

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.circle = [[Circle alloc]initWithFrame:CGRectMake(0, 0, 160, 160)];
    self.circle.center = self.view.center;
    self.circle.backgroundColor = [UIColor clearColor];
    [self.view addSubview:self.circle];


    self.ball  = [[Ball alloc]init];
    self.ball.frame = CGRectMake(0, 0, 40, 40);
    self.ball.backgroundColor =[UIColor clearColor];
    self.ball.center = self.view.center;
    self.ball.clipsToBounds = YES;
    [self.view addSubview:self.ball];
    [self.ball setNeedsDisplay];

    self.point = self.view.center;
    self.angle  = 0;

    self.timer = [NSTimer timerWithTimeInterval:0.1 target:self selector:@selector(makeAnimation) userInfo:nil repeats:YES];

    [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode];

}



-(void) makeAnimation
{
    self.angle+=5;
    CGFloat x = self.point.x+ 80* cos(self.angle * M_PI/180);
    CGFloat y = self.point.y+ 80* sin(self.angle * M_PI/180);
    self.ball.center = CGPointMake(x, y);
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

完成后一个动画就完成了。

这里写图片描述

今天无意之中发现一款录制gif工具,简单实用,仅仅两三步就可以录制出出来。(GifCam) 简单微小,因为使用虚拟机的缘故,没能在mac 找到一款好用,这款正好满足我需求。GifCam

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

苹果开发 笔记(61)recursiveDescription 方法

最近一直在疑惑为什么有NavigationBar的情况, 我在view里面添加了一个UIlabel, 希望这个UIlable 的偏移的位置是离NavigationBar 底部 20 点即可。  我初...

苹果开发的一点小总结(1)

在苹果下面开发了近乎一个月的时间了,项目的目标很明确,就是把前面安卓下面的程序移植到iOS下面。本来以为iOS是基于unix的系统,而unix又和c有天然的亲和关系,想着能够避免安卓系统java平台下...

苹果开发技术: Cocoa 框架概述

这篇文章转载自CSDN,只是可惜CSDN并未标明作者。如果您是这篇文章的作者请联系本站,本站会将您的大名加入。本文比较清楚地说明了Cocoa开发的大致情况,是篇较好的入门教材。建议初学者阅读。 Coc...

App发布系列--苹果开发证书运行机制(二) Code Signing

免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作...

苹果开发之路--Swift之UILabel

好久没有更新博客了,作为初学者,k

注册99美元苹果开发帐号

谈到苹果开发者账号,我们需要区分一下个人账号、公司账号和企业账号这三种,还有一种是教育账号,这个就不多说了。     个人账号:个人申请用于开发苹果app所使用的账号,仅限于个人使用,申请比较容...

关于苹果开发证书失效的解决方案(2016年2月14日Failed to locate or generate matching signing assets)

原文地址:http://m.blog.csdn.net/article/details?id=50673092&from=timeline&isappinstalled=0 前言: ...

苹果开发证书导出P12的问题

昨天测试推送,极光推送需要上传开发证书和生产证书,极光只接受p12文件格式的证书,使用开发者账号生成证书第一步是使用:钥匙串-》证书助理-》从证书颁发机构请求证书 我直接将证书放在磁盘上...

"回复 集赞" 抢 《Apple Watch 苹果开发教程》活动开始了!!!

"回复 集赞" 抢 《Apple Watch 苹果开发教程》活动开始了!!!

苹果开发基础——NSArray排序

// 数组排序1(selector自然排序)     NSArray *array = @[@"2", @"5", @"4", @"8"];     // ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)