2011-03-15 2 views
2

들어가면 페이드,하지만 내가 직접 구현하는 방법을 확실 해요.애니메이션있는 UITableViewCell 내용 없음 내가 아이폰 Mail.app 및 SMS.app 응용 프로그램에서이 기능을 눈치 챘을 편집 모드

표준 UITableView에서 사용자가 '편집'버튼을 누르고 삭제 버튼이 위치로 이동하면 콘텐츠보기가 오른쪽으로 밀려 올라감에 따라 빠른 페이드 전환이 수행되어 더 얇은 버전으로 대체됩니다. 그들 자신 (삭제 단추가 차지하고있는 공간을 설명하기 위해). 그것은 또한뿐만 아니라 어떤 부속품이 셀을 볼로 전환에게 삭제 버튼 자체를 퇴색로

[self.tableView reloadRowsAtIndexPaths: [tableView indexPathsForVisibleRows] withRowAnimation: UITableViewRowAnimationFade]; 

그러나이 맞지 않을 수 있습니다

나는 처음에 편집 모드가 활성화 된 경우이 다음과 같은 방법을 호출하여 수행 한 생각 말하기에는 충분합니다 (매우 이상하게 보입니다). 궁금

, 어떻게 자신을 다시 그리 컨텐츠보기를 강제 할 수있을 것입니다, 다음 테이블이 편집 모드로 들어갑니다 예전를 통해 새로운 그려 버전을 페이드?

UPDATE :

내 최종 솔루션은 setEditing 접근에 다음 코드를 적용 한 후있는 UITableViewCell의 하위 클래스를하고 있었다 : 갈렙의 대답에 덕분에,이 날 내가 후에 무엇 득점 코드의 마지막 블록 :

-(void) setEditing: (BOOL)editing animated: (BOOL)animated 
{ 
    [super setEditing: editing animated: animated]; 

    CATransition *animation = [CATransition animation]; 
    animation.duration = 0.2f; 
    animation.type = kCATransitionFade; 

    //redraw the subviews (and animate) 
    for(UIView *subview in self.contentView.subviews) 
    { 
     [subview.layer addAnimation: animation forKey: @"editingFade"]; 
     [subview setNeedsDisplay]; 
    } 
} 

나는 분명히 분명히해야한다. 성능이 가장 중요하기 때문에, 내 셀의 contentView 안의 모든 것은 CG (즉, drawRect :)를 통해 렌더링되므로, 거기에 그려진 요소를 구체적으로 제어 할 수는 없습니다. 당신이 테이블에 -setEditing:animated:를 호출 할 때 애니메이션이 일어나는

답변

5

. 그런 다음 표는 각 표시된 셀에서 -setEditing:animated:을 호출합니다. 표 셀의 표준 동작은 콘텐츠보기의 크기를 조정하고 오른쪽으로 이동하고 올바른 액세서리를 제거하는 것입니다. 당신이 당신의 자신의 세포를 가지고 편집 모드에서 다른 모습을 원하는 경우에, 나는 당신이 원하는대로 셀 내용을 조정 -setEditing:animated:을 무시할 수 있다고 생각합니다. 속임수를 썼는지

+1

아! 감사!!! – TiM

+0

위대한 - 다음을위한 감사합니다! – Caleb

+0

나는 이것이 그것을 확실히 커버하는지 모른다. 언급 된 앱은 이미 편집 모드에있는 행이 삭제 버튼 (상태 == 3)을 표시 할 때 동일한 전환을 사용합니다. setEditing : animated :이 문제가 발생하면 호출되지 않습니다. –

관련 문제