我想獲得一個UIView擴展使用動畫塊,它完美的作品。但是,我想要一個UILabel從0開始,每0.01秒添加1直到它達到100. 我在動畫完成後創建了一個線程,它可以工作,但它會導致我設置的動畫無法執行任何操作。 我已經嘗試了許多不同的東西,但沒有運氣。什麼是實現這一目標的最佳方式?UIView動畫同時計數線程
我有相同的結果,所有的人簡單的嘗試:
[UIView animateWithDuration:1 animations:^{
_lView.frame = CGRectMake(_lView.frame.origin.x,_lView.frame.origin.y+_lView.frame.size.height,_lView.frame.size.width,-500);
}];
[[[NSThread alloc]initWithTarget:self selector:@selector(startcounting) object:nil]start];
-(void)startcounting{
for(int x=0; x<100; x++){
[NSThread sleepForTimeInterval:0.01];
++_mcount;
dispatch_async(dispatch_get_main_queue(), ^{
_cLabel.text = [NSString stringWithFormat:@"%i",_mcount];
});
}
}
非常感謝你的幫助我現在正在使用這種方法。我注意到,我試圖更新的視圖將與標籤計數同時移動,但尺寸不會改變。當它移動時,它從它將要結束的位置開始並移動到原來的位置。 當我刪除/註釋標籤計數器的代碼它工作正常:它調整大小和更改設置的位置。 任何想法爲什麼標籤計數器存在會導致動畫像這樣執行? 你的回答非常有幫助,但不幸解決了這個問題。 – JeremyF
其實我找到了問題,它不能正常工作。不過謝謝你,因爲你的代碼是非常重要的,我相應地更新了我的代碼。 – JeremyF
@JeremyF - 是的,問題在於,除了使用顯示鏈接更改標籤之外,另一個問題是更改文本將導致重新應用約束(中斷動畫)。當您在自動佈局中爲視圖設置動畫時,不應直接更改「框架」,而應更改約束並調用「layoutIfNeeded」。看修改後的答案。 – Rob