행, 섹션 및 행 높이 수가 극적으로 변경되므로 UITableview의 데이터를 다시로드하고 있습니다. 전환을 부드럽게하기 위해 버튼을 탭할 때 아래 전환을 선택했습니다. reloadData 및/또는 내용 오프셋 코드를 애니메이션 블록 내에 배치하면 결과가 "hacky"/ "stuttering"됩니다. 애니메이션 전에보기 변경 사항을 배치하면 꿈처럼 작동합니다. 왜이 기능이 작동합니까? transitionWithView (iOS 10.1)의 버그있는 동작을 사용하고 있습니까? 이것이 어떻게 올바르게 이루어져야 하는가?UIView transitionWithView가 애니메이션 블록 외부에서 변경 사항을 사용할 때 부드러움
[self.tableView reloadData];
CGPoint bottomOffset = CGPointMake(0, [self.tableView contentSize].height + [self.tableView contentInset].bottom - self.tableView.frame.size.height);
[self.tableView setContentOffset:bottomOffset animated:NO];
[UIView transitionWithView: self.tableView
duration: 0.35f
options: UIViewAnimationOptionTransitionCrossDissolve
animations: ^(void)
{
}
completion: nil];
답변 해 주셔서 감사합니다. 그러나 문제는 animateWithDuration이 원활하게 작동하지 않는다는 것입니다 (점프 업하고 소유하고있을 가능성이 있습니다. 왜냐하면 crossdisolve처럼 단순히 페이드 인하는 것이 아니라 콘텐츠 오프셋 때문입니다.) transitionWithView를 사용하고 뷰를 tableview로 설정하거나 컨트롤러보기, 애니메이션 블록에서 변경 사항을 제외 할 때 잘 작동합니다. 어떤 아이디어가 있습니까? – damcify
@damcify는 새로운 접근법으로 편집했습니다. – valivaxa