ios开发 子线程不断更新主UI中的UIImageView形成动画。但是UIImageView中的图片只更新了一次。 20

主线程:(包含属性:NSThread*titlevideo;UIImageView*backgroundani;)backgroundani=[[UIImageViewa... 主线程:
(包含属性:NSThread *titlevideo; UIImageView *backgroundani; )

backgroundani = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, frame.size.height, frame.size.width)];

titlevideo = [[NSThread alloc] initWithTarget:self selector:@selector(thread_titlevideo:) object:nil];
[titlevideo start];
子线程:
- (void)thread_titlevideo:(id)sender
{
while (YES) {

[backgroundani setImage:[UIImage imageNamed:[NSString stringWithFormat:@"titleVideo%d.jpg",ct]]];
usleep(300000);
if (ct == 487) { ct = 1; }
} }

本来想这样组成一个487帧的循环动画,但是实际运行却只更新了一次,而循环却正常走着。
是跟子线程不能访问主线程UI有关吗?
我该怎样在不卡住主线程的情况下解决这个问题呢?
我就是想这个图片控件一直进行着循环动画,而程序又不会失去响应。
展开
 我来答
百度网友a87cf71c9
推荐于2021-02-01
知道答主
回答量:5
采纳率:0%
帮助的人:3.7万
展开全部
UI的操作或更新必须在主线程里进行。

[backgroundani setImage:[UIImage imageNamed:[NSString stringWithFormat:@"titleVideo%d.jpg",ct]]];

应改为:

[backgroundani performSelectorOnMainThread:@selector(setImage:) withObject:[UIImage imageNamed:[NSString stringWithFormat:@"titleVideo%d.jpg",ct]] waitUntilDone:YES];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
恒星浩然
2012-11-08 · TA获得超过324个赞
知道小有建树答主
回答量:262
采纳率:100%
帮助的人:141万
展开全部
试试用NSThread的类方法:
+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式