object-c写一个红包雨功能
时间: 2024-03-16 19:45:16 浏览: 71
好的,这里提供一个简单的红包雨功能的object-c实现示例:
首先,我们需要准备红包图片的资源,用UIImageView来展示红包。
```objective-c
// 初始化红包图片视图
UIImageView *redPacketImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, -50, 50, 50)];
redPacketImageView.image = [UIImage imageNamed:@"redPacket.png"];
[self.view addSubview:redPacketImageView];
```
接下来,我们需要实现红包的下落动画,让它从上面飘落到下面。
```objective-c
// 定义红包下落动画
CABasicAnimation *fallingAnimation = [CABasicAnimation animationWithKeyPath:@"position.y"];
fallingAnimation.fromValue = [NSNumber numberWithFloat:-50];
fallingAnimation.toValue = [NSNumber numberWithFloat:self.view.bounds.size.height + 50];
fallingAnimation.duration = 5.0;
fallingAnimation.delegate = self;
// 添加红包下落动画
[redPacketImageView.layer addAnimation:fallingAnimation forKey:@"fallingAnimation"];
```
我们同时需要处理多个红包的下落逻辑,可以使用NSTimer定时器来实现。
```objective-c
// 定义红包定时器
NSTimer *redPacketTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(addRedPacket) userInfo:nil repeats:YES];
// 添加红包方法
- (void)addRedPacket {
// 初始化红包图片视图
UIImageView *redPacketImageView = [[UIImageView alloc] initWithFrame:CGRectMake(arc4random_uniform((uint32_t)self.view.bounds.size.width - 50), -50, 50, 50)];
redPacketImageView.image = [UIImage imageNamed:@"redPacket.png"];
[self.view addSubview:redPacketImageView];
// 定义红包下落动画
CABasicAnimation *fallingAnimation = [CABasicAnimation animationWithKeyPath:@"position.y"];
fallingAnimation.fromValue = [NSNumber numberWithFloat:-50];
fallingAnimation.toValue = [NSNumber numberWithFloat:self.view.bounds.size.height + 50];
fallingAnimation.duration = 5.0;
fallingAnimation.delegate = self;
// 添加红包下落动画
[redPacketImageView.layer addAnimation:fallingAnimation forKey:@"fallingAnimation"];
}
```
最后,我们需要处理红包落地后的逻辑,让用户可以获得奖励。
```objective-c
// 红包下落动画结束后回调方法
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
// 判断是否是红包下落动画
if ([redPacketImageView.layer animationForKey:@"fallingAnimation"] == anim) {
// 移除红包图片视图
[redPacketImageView removeFromSuperview];
// 弹出获得奖励提示框
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"恭喜您获得奖励!" message:@"获得了10元现金红包!" preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]];
[self presentViewController:alertController animated:YES completion:nil];
}
}
```
这样就实现了一个简单的红包雨功能。当用户进入红包雨页面后,红包会不断从上面飘落到下面,并且用户可以获取奖励。
阅读全文