2013-02-04 51 views
0

我想允許用戶Xcode和其他文本編輯器如何幫助您淺色和深色背景之間切換應用程序,IE的幾個調色板之間進行切換。我能夠簡單地完成所有這些工作,但現在我試圖將更改包裝在一個簡單的動畫塊中,以便顏色變化淡入。除了我的表格視圖單元格外,一切都很好。顏色改變,但他們不動畫。如何爲UITableViewCell的顏色設置動畫效果?

[UIView animateWithDuration:0.5 animations:^{ 
    self.tableView.backgroundColor = [UIColor whiteColor]; 

    for (UITableViewCell *cell in self.tableView.visibleCells) 
    { 
     cell.textLabel.textColor = [UIColor blueColor]; 
    } 
}]; 

我試圖不重新加載整個表,因爲這會造成很多的事情再次佈局,我不想。坦率地說,我已經嘗試了幾次,而且無論如何它都無法工作。

對於它的價值,我的UITableView進行分組,但我不認爲那是真正影響我的解決辦法做。

這裏列出的答案是有趣的,但我不相信是有關​​我的問題 - 我改變文字顏色,從來沒有動畫:Animating UITableViewCell's backgroundColor in block animation

+0

我敢肯定的文字顏色是不是有生命的,能特性。 tableview backgroundcolor是否正確動畫? –

+0

這會解釋它;是的,背景顏色是正確的動畫,雖然我的圓形/分組單元格周圍的邊緣立即改變。是否有文檔說UILabel.textcolor不是動畫? – Mike

+1

看一看:http://stackoverflow.com/a/12646818/546208 – shadowhorst

回答

0

謝謝你們,@shadowhorst聯繫是非常有幫助。我能夠通過使用交叉漸變過渡而不是animateWithDuration方法來實現我想要的效果。代碼如下 -

[UIView transitionWithView:self.tableView 
        duration:0.25 
        options:UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowAnimatedContent 
       animations:^{ 
        self.tableView.backgroundColor = [UIColor whiteColor];; 

        for (UITableViewCell *cell in self.tableView.visibleCells) 
        { 
         cell.textLabel.textColor = [UIColor blueColor]; 
        } 
       } 
       completion:nil]; 

我也注意到,還有在我被編組單元,這就是爲什麼我放棄了我的動畫的持續時間降低到四分之一秒的邊緣部分文物。

+1

爲什麼不簡單地用淡入淡出重新加載可見行? '[的tableView reloadRowsAtIndexPaths:的tableView indexPathsForVisibleRows] withRowAnimation:UITableViewRowAnimationFade];'。 – rmaddy

+0

我可以在桌面視圖背景顏色的同時爲這些行創建動畫嗎? – Mike

+0

可能不是。我錯過了那個細節。我的建議只適用於行,而不是表格的背景。 – rmaddy

0

的問題是,文本屬性都沒有設置動畫。爲了動畫的變化,我會建議在添加自定義視圖中的表格單元格的contentView比你可以使用視圖轉換動畫以交換爲新的(用新的顏色設置)的舊觀點。這意味着要爲您放入contentView的視圖進行自己的佈局,因爲您不再使用其中一種預定義的樣式。

在這裏看到的文檔:http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/tableview_iphone/TableViewCells/TableViewCells.html

相關問題