需求:在点击button的之后播放音乐里,button的背景频繁在1.png和2.png之间切换
当前的代码:
-(void)btnImageChange{
bool c=FALSE;
while(!playFinish) {//没有播放完音乐,button的image就一直变
while(c) {
//我把图片提前存进了一个objact的数组中,数组叫soundImage
[soundBtn setImage:[soundImage objectAtIndex:0] forState:UIControlStateNormal];
NSLog(@"aaaa");
c=FALSE;
[NSThread sleepForTimeInterval:0.5]; //变完后此线程休眠500毫秒
}
[soundBtn setImage:[soundImage objectAtIndex:1] forState:UIControlStateNormal];
NSLog(@"bbbb");
c=TRUE;
[NSThread sleepForTimeInterval:0.5]; //变完后此线程休眠500毫秒
}
}
控制台打印:
bbbb
aaaa
bbbb
aaaa
bbbb
aaaa
bbbb
aaaa
[size=16px]头疼了一天的问题是:图片压根没变,打印正常说明两处的setImage都执行了,为什么会不变,控制台没有丝毫的异常,啊,神啊,来救救我吧~~~~[/size]
弱弱的问一句:iphone中button是不是设置image完了要clear一下,不然后面再设置image就没有效果,但是具体clear什么不清楚,只是胡猜,还请大牛来解答一下
------解决方案--------------------
代码有明显问题:
代码是在一个UI里运行的吧,UI线程运行完才会刷新;
NSThread阻塞500ms,UI线程就会被阻塞500ms, 所以图片变化效果你根本看不到的。
你需要把[soundBtn setImage:[soundImage objectAtIndex:1] forState:UIControlStateNormal];
这种代码放到
performOnMainThread.....WaitUntilDone:NO 的方法中去实现才行,强制执行刷新。