我想要做的是在計時器滴答時動畫標籤。 我有一個基於窗口的應用程序。核心動畫和NSTimer
- 我在while循環中嘗試了核心動畫,但程序只是凍結。
- 我嘗試了由定時器(NSTimer)觸發的核心動畫,但沒有任何反應。
問題:我調試過的程序,一切都很好,所有的語句都在執行,但沒有任何反應。我認爲不允許在循環中或定時器觸發的核心動畫。有沒有其他方法?
我有的是:
drawingTimer = [NSTimer scheduledTimeWithTimeInterval:60.0 target:self
selector:@selector(slideWords) userInfo:nil repeats:NO];
-void (slideWords){
randomNumber = 1 + arc4Random()%2;
if(randomNumber = 1){
Redlabel.alpha = 1.0;
RedLabel.frame = CGRectMake(0, -50, 320, 100);
[UIWindow animateWithDuration:5.0 animations:^{
Redlabel.alpha = 1.0;
Redlabel.frame = CGRectMake(0,300,320,100);
}completion:^(BOOL finished){
[UIWindow animateWithDuration:0.5 delay:0.5 options:0 animations:^{
Redlabel.alpha = 0.0;
}completion:^(BOOL finished){
}];
}];
}
if(randomNumber = 2){
GreenLabel.alpha = 1.0;
GreenLabel.frame = CGRectMake(0, -50, 320, 100);
[UIWindow animateWithDuration:5.0 animations:^{
GreenLabel.alpha = 1.0;
GreenLabel.frame = CGRectMake(0,300,320,100);
}completion:^(BOOL finished){
[UIWindow animateWithDuration:0.5 delay:0.5 options:0 animations:^{
GreenLabel.alpha = 0.0;
}completion:^(BOOL finished){
}];
}];
}
}
沒有讀完整個事情,但你的條件只是做作業。兩者都將被評估爲true,並改變randomNumber。另外,alpha級別被賦值爲1,然後被賦值爲1(no-op)。 – danh
當我只寫在RedLabel.alpha .....休息的行;程序工作正常。問題應該由NSTimer或循環觸發,所以我正在尋找替代品。 –
此外,您將兩個標籤的框架設置爲相同的矩形,然後對同一矩形設置動畫。一個將永遠隱藏。我認爲你應該重新開始並從根本上簡化:沒有循環或計時器,沒有隨機的。只需讓一個標籤消失並移動你想要的方式(可能會添加一個臨時按鈕來觸發它)。然後做第二個標籤。然後硬編碼你想要的兩個隨機情況,然後添加隨機...等等。你會到達那裏! – danh