ios多线程Android,iOS 多线程动画

最近发现想用苹果自带的动画函数来添加多个控件并且让它们一个接一个的显示出来是很困难的,因为自带的动画函数每次都是把我需要的动画或者控件一次性创建完再显示成动画的。下面的代码就是遇到了这样的情况,不能每次加载一个新的控件就立即显示出来,而是全部加载完了一起显示的。

- (void)add{

for (int i = 0; i<10; i++) {

UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(120, 20*i+30, 80, 15)];

button.backgroundColor = [UIColor redColor];

[button setTitle:@"asd" forState:UIControlStateNormal];

[self.view addSubview:button];

[NSThread sleepForTimeInterval:0.5f];//延时0.5s

NSLog(@"other i:%d",i);

}

}

经过多方面的搜集资料,现在总结了一个方法可以实现这个功能。

首先我们要用到多线程,先说一下什么是线程,个人的理解是:凡是一个正在运行的程序都处在一个线程上。而大多数程序都只用到一个线程。如果学过单片机的话我觉得和单片机里面的中断有些相似,都是在主程序中运行的时候跳转出来去执行其他函数。我们现在要做的就是在主线程中新开辟一个线程,把我们要生成的新的控件或者UIView不在主线程中生成,而是我们新开辟一个线程并且在新的线程中生存需要成为动画的控件。大家看一下下面的代码

- (void)add{

for (int i = 0; i<10; i++) {

NSLog(@"first i:%d",i);

[NSThread detachNewThreadSelector:@selector(add2:i) toTarget:self withObject:nil];

[NSThread sleepForTimeInterval:0.5f];//延时0.5s

NSLog(@"other i:%d",i);

}

}

- (void)add2:(int)i

{

UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(120, 20*i+30, 80, 15)];

button.backgroundColor = [UIColor redColor];

[button setTitle:@"asd" forState:UIControlStateNormal];

[self.view addSubview:button];

}

大家注意到没有本来只有一个函数的现在拆分成两个函数了。我把for循环里的创建控件的程序段移出来重新建了个函数add2,并且在原来的for循环里面添加了一句通过线程调用添加对象的语句:[NSThread detachNewThreadSelector:@selector(add2:i) toTarget:self withObject:nil];

这样每次创建新对象就不在主线程的内存中了,而是在新的线程里面创建对象并且能立马显示出来,连续创建多个再配合延时函数就能成为一桢桢动画了。

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/2930.html

75d087ef9a9fb11dc373caaf33adbf7f.png

微信打赏

支付宝打赏

感谢您对作者Bear的打赏,我们会更加努力!    如果您想成为作者,请点我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值