OC 颜色渐变动画和动画组

#define RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1]


#import "ViewController.h"

@interface ViewController (){
    UIView * _v;
    NSNumber * _from;
    NSNumber * _to;
    
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    _v = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
    _v.backgroundColor = [UIColor redColor];
    [self.view addSubview:_v];
    
    UIButton * btn = [[UIButton alloc] initWithFrame:CGRectMake(100, 300, 80, 40)];
    [btn setTitleColor:[UIColor blueColor] forState:(UIControlStateNormal)];
    [btn setTitle:@"开始" forState:(UIControlStateNormal)];
    [btn addTarget:self action:@selector(beginBtn:) forControlEvents:(UIControlEventTouchUpInside)];
    
    [self.view addSubview:btn];
    
    UIButton * btn2 = [[UIButton alloc] initWithFrame:CGRectMake(200, 300, 80, 40)];
    [btn2 setTitleColor:[UIColor blueColor] forState:(UIControlStateNormal)];
    [btn2 setTitle:@"结束" forState:(UIControlStateNormal)];
    [btn2 addTarget:self action:@selector(beginBtn:) forControlEvents:(UIControlEventTouchUpInside)];
    [self.view addSubview:btn2];

    _from = 0;
    _to = [NSNumber numberWithFloat:M_PI_4];
    
    
}


- (void)beginBtn:(UIButton *)sender{

    [self animations:sender from:_from to:_to];
}

-(void)animations:(UIButton *)sender from:(NSNumber *)from to:(NSNumber *)to{
    
    
    CABasicAnimation * ani = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
    
    CABasicAnimation * ani2 = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    

    if ([sender.currentTitle isEqualToString:@"开始"]) {
        ani.fromValue = (__bridge id _Nullable)(([UIColor redColor].CGColor));
        ani.toValue = (__bridge id _Nullable)([UIColor greenColor].CGColor);
        ani2.fromValue = from;
        ani2.toValue = to;

    }else{
        ani.fromValue = (__bridge id _Nullable)([UIColor greenColor].CGColor);
        ani.toValue = (__bridge id _Nullable)([UIColor redColor].CGColor);
        ani2.fromValue = to;
        ani2.toValue = from;
        
    }
    CAAnimationGroup * groupAni = [[CAAnimationGroup alloc] init];
    groupAni.animations = @[ani,ani2];
    groupAni.fillMode = kCAFillModeForwards;
    groupAni.removedOnCompletion = false;
    groupAni.duration  = 1;
    [_v.layer addAnimation:groupAni forKey:@"backgroundColor"];
    
}
@end

 

转载于:https://my.oschina.net/wayzhu/blog/3081702

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 iOS 中,可以使用 MultipeerConnectivity 框架来实现播(也称为多点广播)的发送和接收。MultipeerConnectivity 框架提供了一种在 Wi-Fi 和蓝牙网络上进行多点通信的方式。 以下是一个示例代码,展示了如何使用 MultipeerConnectivity 框架进行播发送和接收: 1. 导入 MultipeerConnectivity 框架: ```objective-c #import <MultipeerConnectivity/MultipeerConnectivity.h> ``` 2. 创建 MCSession 对象: ```objective-c @property (nonatomic, strong) MCSession *session; ``` ```objective-c self.session = [[MCSession alloc] initWithPeer:[MCPeerID new]]; self.session.delegate = self; ``` 3. 创建 MCBrowserViewController 对象: ```objective-c @property (nonatomic, strong) MCBrowserViewController *browserViewController; ``` ```objective-c self.browserViewController = [[MCBrowserViewController alloc] initWithServiceType:@"my-service" session:self.session]; self.browserViewController.delegate = self; ``` 4. 发送播消息: ```objective-c NSError *error; NSData *dataToSend = [@"Hello, World!" dataUsingEncoding:NSUTF8StringEncoding]; [self.session sendData:dataToSend toPeers:self.session.connectedPeers withMode:MCSessionSendDataReliable error:&error]; ``` 5. 接收播消息: ```objective-c - (void)session:(MCSession *)session didReceiveData:(NSData *)data fromPeer:(MCPeerID *)peerID { NSString *message = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"Received message: %@", message); } ``` 在上面的示例代码中,我们创建了一个 MCSession 对象,并将其设置为自身的代理。然后,我们创建了一个 MCBrowserViewController 对象,并设置其代理为自身。通过 MCBrowserViewController,我们可以选择要连接的其他设备。 在发送播消息时,我们将要发送的数据转换为 NSData,并使用 MCSession 的 sendData:toPeers:withMode:error: 方法将其发送到连接的所有对等点。 在接收播消息时,我们实现了 MCSessionDelegate 的 didReceiveData:fromPeer: 方法,并将接收到的数据转换为 NSString,并打印到控制台中。 需要注意的是,我们需要在 Info.plist 文件中添加 NSMultipeerNetworkingUsageDescription 权限,以便用户授权应用程序使用 MultipeerConnectivity。 以上就是在 iOS 中实现播发送和接收的基本步骤和示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值