/ MainViewController.m
// EllipseTest1
//
// Created by mac on 16/3/25.
// Copyright © 2016年 mac. All rights reserved.
//
#import "MainViewController.h"
@interface MainViewController ()
@end
@implementation MainViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIImageView *FireImageView = [[UIImageView alloc] init ];
FireImageView.image = [UIImage imageNamed:@"fireball.png"];
//fireball的bounds边界 // default bounds is zero origin, frame size. animatable bounds中只有宽width高height是可变的
FireImageView.bounds = CGRectMake(0, 0,60 , 60);
// // center is center of frame. animatable :center是CGPoint类型 可变
FireImageView.center = CGPointMake(160, 240);
//sele.view添加子视图FireImageView
[self.view addSubview:FireImageView];
//_smokeImageView是全局变量 (灰色球是要做圆周运动的)之所以设置为全局变量 是因为 我们在下面的move方法中要用到它 初学者有时候会对一个变量要不要设置为全局变量感到迷惑 可以试着先用局部变量做 如果后面要用到在改为全局变量
_smokeImageView = [[UIImageView alloc] initWithFrame:CGRectMake(60, 60, 40, 40)];
_smokeImageView.image = [UIImage imageNamed:@"smokeball.png"];
[self.view addSubview:_smokeImageView];
//定时器
_timer = [NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(move ) userInfo:nil repeats:YES];
//在开启定时器之后 立即调用所绑定的方法
[_timer fire];
}
-(void)move
{
_angle +=5;
float x = 120 * cos(_angle * M_PI / 180) + 160;
float y = 120 *sin(_angle * M_PI / 180) + 240;
_smokeImageView.center = CGPointMake(x , y );
[_smokeImageView startAnimating];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)btnClick:(id)sender // 下面是两种方法
{
// UIButton *btn = (UIButton *)sender;
//
// //_isStop默认为no
//
// if (_isStop == NO)
// {
// //废除定时器 定时器一旦废除就不能再用 永久性停止此时必须清空内存 否则导致内存泄露
// [_timer invalidate];
// //设置_timer为空
// _timer = nil;
// //改变按钮名称
// [btn setTitle:@"开始" forState:UIControlStateNormal];
// //改变bool状态
// _isStop = YES;
// }
// else
// {
// //从新开启一个定时器 此定时器与上面定时器已经不是同一个
// _timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(move ) userInfo:nil repeats:YES];
//
// //改标题
// [btn setTitle:@"暂停" forState:UIControlStateNormal];
// //改变bool状态
// _isStop = NO;
//
// }
UIButton *btn = (UIButton *)sender;
NSString *title = [btn titleForState:UIControlStateNormal];
if ([title isEqualToString:@"停止"])
{
//定时器暂停
[_timer setFireDate:[NSDate distantFuture]];
[btn setTitle:@"开始" forState:UIControlStateNormal];
}
else
{
//重新开启定时器 此处的定时器与上面定时器是同一个
[_timer setFireDate:[NSDate distantPast]];
[btn setTitle:@"停止" forState:UIControlStateNormal];
}
}
@end