2012-10-14 103 views
2

我在iOS中使用UIToolbar,並試圖從右側滑入一個新按鈕以「抵達」。有沒有辦法直接訪問欄上按鈕的「位置」?我目前有一個凌亂的解決方法,正在接近所需的效果,但我希望有一種方法可以使用Core Animation來移動它們,所以我可以實現'EaseInEaseOut'類型的定時功能。有任何想法嗎?如何移動UIToolbar項目?

- (void) testPart1 { 
    [NSTimer scheduledTimerWithTimeInterval:(0) target:self selector:@selector(testPart2:) userInfo:[NSNumber numberWithInt:500] repeats:NO]; 
} 

- (void) testPart2:(NSTimer*)sender { 
    int countdown = [sender.userInfo integerValue]; 
    theSpace.width = 10+(int)countdown; 
    itemTestButton.width = 49; 
    itemTestButton.width = 50; 
    countdown -= 5; 
    if(countdown>0) 
    [NSTimer scheduledTimerWithTimeInterval:(0.004) target:self selector:@selector(testPart2:) userInfo:[NSNumber numberWithInt:countdown] repeats:NO]; 
} 

前提這裏使用的NSTimer改變一個固定的空間欄按鈕項的寬度和計數下降到零。我發現我不得不改變實際按鈕的寬度以使其工作,否則不會出現「動畫」。我知道這很亂,有人必須有一個更清潔的方式。

回答

1

我建議增加一個普通UIView作爲正好呈現爲欄按鈕將是UIToolbar的子視圖(您可以通過在現有的按鈕調用renderInContext:得到這個),然後設置動畫視圖到適當的位置。在該動畫的完成塊中,您可以設置真正的按鈕和動畫視圖,並且它對用戶來說看起來難以區分。