2010-06-15 129 views
1

我目前有一個UITableView與每個單元格包含四個UIButtons。我正在爲每個按鈕放置一張圖片,並在網上下載了一張圖片。當圖像完成下載時,我想讓按鈕淡入。我知道我可以在viewDidLoad中生成動畫,但我在cellForRowAtIndex函數中分配了圖像。當我更新UIButton圖像時,我如何在稍後的時間點動畫UIButton如何在UITableView中爲UIButton設置動畫效果?

回答

1

您應該爲UIButton分配一個標記,甚至可以定義一個整數標記,以便在有四個按鈕時易於閱讀。

#define CELL_BUTTON_ONE 9999 

當你創建的第一個按鈕分配本文標籤:

[myButton setTag:CELL_BUTTON_ONE]; 
[cell addSubView:myButton]; 

因爲我不知道在哪裏或你如何加載它是一個有點難以說你應該做的圖像。這個想法是你得到了一個UITableViewCell的引用,它擁有你想要被圖像替換的按鈕。任何你可以參考的單元格,你現在可以去:

UIButton *buttonOne = [cell viewWithTag:CELL_BUTTON_ONE]; 
[button setImage:loadedImage]; 
+0

+1這是正確的做法。但是,它不應該是[cell.contentView addSubview:myButton]?我認爲這是[buttonOne setImage:loadedImage forState:xxxxx] – David 2010-08-18 15:42:38

+0

我認爲你是對的大衛:) 我通常做自定義單元格,所以我不使用不同的單元格視圖。 – RickiG 2010-08-24 18:17:23

0

在-cellForRowAtIndexPath中執行它。當你的圖像完成下載後,你會在你的表格視圖上調用-reloadData。您可以爲單元格中的每個UIButton創建出口,也可以爲它們分配一個標籤。在IB中將它們的alpha設置爲0.0。然後,當調用-cellForRowAtIndexPath時,如果該行/按鈕的圖像可用,請設置它的圖像,然後在UIView動畫塊中調用-setAlpha:1.0。喜歡的東西:

- (UITableViewCell*)tableView:(UITableView*)tv 
     cellForRowAtIndexPath:(NSIndexPath*)indexPath 
{ 
    // get a reference to your cell... 

    // get reference to the UIButton in the cell 
    UIButton *button = [cell viewWithTag:tagForButton]; 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.75]; 
    [button setAlpha:1.0f]; 
    [UIView commitAnimations]; 
} 

唯一的問題我能想到的是,你將需要跟蹤的阿爾法值基於您的數據由於細胞再利用給定的indexPath。因此,如果當前單元格中的button1已將其alpha設置爲1.0,則不需要再次對其進行動畫處理,但您會想要設置尚未設置的其他任何按鈕的alpha。這個圖像可見性狀態是你必須跟蹤的東西。這並不難,但除了設置阿爾法之外,還有更多。讓我知道你是否需要澄清。

相關問題