iOS 动画 —— 吃豆豆

一个吃豆豆的小动画,蛮简单的。

eat peas
#import "ViewController.h"

#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
#define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height

static const CGFloat kPearsWidth = 30.0f;
static const CGFloat kPearsHeight = 30.0f;
static const CGFloat kEatPicWidth = 60.0f;
static const CGFloat kEatPicHeight = 60.0f;
static const CGFloat kSpaceButtonHeight = 120.f; // 预留高度

@interface ViewController ()

@property (nonatomic, strong) UIImageView *eatImageView;
@property (nonatomic, strong) UIImageView *peasImageView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // 添加
    [self.view addSubview:self.peasImageView];
    [self.view addSubview:self.eatImageView];
    // 并大致设置其位置
    self.eatImageView.center = CGPointMake((SCREEN_WIDTH - kPearsWidth - kEatPicWidth)/2.0, 120);
    self.peasImageView.center = CGPointMake((SCREEN_WIDTH - kPearsWidth - kEatPicWidth)/2.0 + kPearsWidth + kEatPicWidth, 120);
    
}

- (void)showPeasImageView {
    // 获取随机位置
    self.peasImageView.center = CGPointMake((arc4random() % (int)(SCREEN_WIDTH - kEatPicWidth)) + kEatPicWidth, (arc4random() % (int)(SCREEN_HEIGHT - kEatPicHeight - kSpaceButtonHeight)) + kEatPicHeight);
    // 显示
    self.peasImageView.hidden = NO;
}

- (UIImageView *)peasImageView {
    if (!_peasImageView) {
        _peasImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, kPearsWidth, kPearsHeight)];
        _peasImageView.image = [UIImage imageNamed:@"peas"];
    }
    return _peasImageView;
}

- (UIImageView *)eatImageView {
    if (!_eatImageView) {
        _eatImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, kEatPicWidth, kEatPicHeight)];
        _eatImageView.image = [UIImage imageNamed:@"eatRight"];
    }
    return _eatImageView;
}

/**
  按钮是通过 StoryBoard 创建的
 */
- (IBAction)upAction:(id)sender {
    
    if (self.eatImageView.center.y > self.eatImageView.frame.size.height) {
        // 向上移动10
        [UIView animateWithDuration:0.5 animations:^{
            self.eatImageView.image = [UIImage imageNamed:@"eatUp"];
            self.eatImageView.center = CGPointMake(self.eatImageView.center.x, self.eatImageView.center.y - 10);
            // 判断其是否可以吃掉豆子啦
            if (self.eatImageView.center.x - (kEatPicWidth / 2) < self.peasImageView.center.x && self.eatImageView.center.x + (kEatPicWidth / 2)>self.peasImageView.center.x && self.eatImageView.center.y - (kPearsWidth/2)<self.peasImageView.center.y && self.eatImageView.center.y +(kPearsWidth/2) > self.peasImageView.center.y) {
                self.peasImageView.hidden=YES;
                [self performSelector:@selector(showPeasImageView) withObject:self afterDelay:0.8];
            }
        
        }];
    }
}

- (IBAction)downAction:(id)sender {
    // kSpaceButtonHeight 是四个按钮预留的距离
    if (self.eatImageView.center.y < (SCREEN_HEIGHT - self.eatImageView.frame.size.height - kSpaceButtonHeight)) {
        [UIView animateWithDuration:0.5 animations:^{
            self.eatImageView.center=CGPointMake(self.eatImageView.center.x, self.eatImageView.center.y+10);
            self.eatImageView.image=[UIImage imageNamed:@"eatDown"];
            // 判断其是否可以吃掉豆子啦
            if (self.eatImageView.center.x - (kEatPicWidth / 2) < self.peasImageView.center.x && self.eatImageView.center.x + (kEatPicWidth / 2)>self.peasImageView.center.x && self.eatImageView.center.y - (kPearsWidth/2)<self.peasImageView.center.y && self.eatImageView.center.y +(kPearsWidth/2) > self.peasImageView.center.y) {
                self.peasImageView.hidden=YES;
                [self performSelector:@selector(showPeasImageView) withObject:self afterDelay:0.8];
            }

        }];
    }
}

- (IBAction)leftAction:(id)sender {
    
    if (self.eatImageView.center.x > self.eatImageView.frame.size.width) {
        // 向上移动10
        [UIView animateWithDuration:0.5 animations:^{
            self.eatImageView.center=CGPointMake(self.eatImageView.center.x-10, self.eatImageView.center.y);
            self.eatImageView.image=[UIImage imageNamed:@"eatLeft"];
            // 判断其是否可以吃掉豆子啦
            if (self.eatImageView.center.x - (kEatPicWidth / 2) < self.peasImageView.center.x && self.eatImageView.center.x + (kEatPicWidth / 2)>self.peasImageView.center.x && self.eatImageView.center.y - (kPearsWidth/2)<self.peasImageView.center.y && self.eatImageView.center.y +(kPearsWidth/2) > self.peasImageView.center.y) {
                self.peasImageView.hidden = YES;
                [self performSelector:@selector(showPeasImageView) withObject:self afterDelay:0.8];
            }
        }];
    }
}

- (IBAction)rightAction:(id)sender {

    if (self.eatImageView.center.x < (SCREEN_WIDTH - self.eatImageView.frame.size.width)) {
        [UIView animateWithDuration:0.5 animations:^{
            
            self.eatImageView.center=CGPointMake(self.eatImageView.center.x+10, self.eatImageView.center.y);
            self.eatImageView.image=[UIImage imageNamed:@"eatRight"];
            // 判断其是否可以吃掉豆子啦
            if (self.eatImageView.center.x - (kEatPicWidth / 2) < self.peasImageView.center.x && self.eatImageView.center.x + (kEatPicWidth / 2)>self.peasImageView.center.x && self.eatImageView.center.y - (kPearsWidth/2)<self.peasImageView.center.y && self.eatImageView.center.y +(kPearsWidth/2) > self.peasImageView.center.y) {
                self.peasImageView.hidden = YES;
                [self performSelector:@selector(showPeasImageView) withObject:self afterDelay:0.8];
            }
        }];
    }
}

@end

说白了,就是位置的改变的和图像的隐藏,此处作为熟悉用。

PS:场景来自:【iOS开发范例实战宝典.进阶篇】。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,876评论 25赞 708
  • 单身英雄,愿你拥有不将就的婚姻,再晚也能收获爱情! 大年初三,人们都还在沉浸在节日的快乐,大家忙着喝酒、打牌、访友...
    咸鱼贩阅读 437评论 0赞 0
  • 雨淅淅沥沥下了一天,看了天气预报,接下来的一周都会持续。 南方一年四季都会下雨,所以对雨少了期盼,甚至惧怕冬雨。冬...
    溪南客阅读 327评论 2赞 4
  • 我能想到的爱情,大概就是和父母之间的一样,平淡无奇,波澜不惊。两个人相互见证着从青葱岁月慢慢变老。 大专文化...
    三点水一个度阅读 971评论 0赞 0
  • 高中很苦,高中很累,但,高中很难忘!这里有我们的青春岁月,有我们不变的友谊,有我们难忘的日日夜夜!!!两眼一睁,开...
    尹思齐阅读 245评论 0赞 2

友情链接更多精彩内容