2010-12-23 4 views
3

UITableView 셀 액세서리의 제거를 애니메이션화하는 방법이 있습니까?UITableViewCellAccessory의 애니메이션 제거

저는 현재 UITableViewCellAccessoryDisclosureIndicator를 보여주고 있습니다.하지만 모든 표시 가능한 표 셀에서 UISwitch를 사용하여 공개 표시기를 바꿔서 애니메이트하고 싶습니다.

[UIView animateWithDuration:0.3 
       animations:^{ 
        for (SwitchTableViewCell *cell in self.tableView.visibleCells) 
        { 
        cell.accessoryType = UITableViewCellAccessoryNone; 
        }      
       }]; 

을 ...하지만 불행히도 그것은 어떤 영향을했습니다

나는 이런 식으로 뭔가를 시도하지했습니다. 공개 표시기가 갑자기 사라지고 contentView 너비가 부드러운 전환이 아닌 한 단계로 건너 뜁니다.

답변

3

accessoryType은 (는) 애니메이션 가능한 속성이 아닙니다. 상황에 따라이 작업을 수행 할 수있는 두 가지 방법이 있습니다. 가장 쉬운 방법은 편집 상태로 들어가기 때문에 액세서리를 UISwitch로 변경하는 경우에만 적용됩니다. 이 경우 tableView:cellForRowAtIndexPath: 방법에서 cell.editingAccessoryType = theSwitch;을 사용하면됩니다. 테이블보기는 편집 모드로 들어가면 자동으로 페이드 인/아웃을합니다. 당신이 편집 모드의 외부에서이를 수행하는 경우

, 다음 코드는 당신이 원하는 것을 할 것입니다 :이 코드는 앱 스토어로 만들 것 경우는 사용하기 때문에

[UIView animateWithDuration:0.3 animations:^{ 
    for(SwitchTableViewCell *cell in self.tableView.visibleCells) { 
     [[cell valueForKey:@"_accessoryView"] setAlpha:0.0]; 
    } 
} completion:^(BOOL done) { 
    for(SwitchTableViewCell *cell in self.tableView.visibleCells) { 
     cell.accessoryView = theSwitch; 
    } 
}]; 

그러나, 나도 몰라 숨겨진 속성 _accessoryView.

관련 문제