내가 만든이 간단한 사용자 정의 TUIScrollView 클래스 (TwUI 오픈 소스 프로젝트 및 UIScrollView와 매우 유사)에서 크기 조정 토글 애니메이션을 만들려고합니다. TUILayout이라고 불리우며 수직 레이아웃, 애니메이션 삽입 및 제거뿐 아니라 수평 레이아웃을 지원하며 위임보다 선호하는 셀에 데이터를 제공하는 데 더 많은 선언적 방법을 제공합니다. TUITableView 또는 UITableView와 유사한 뷰를 재사용합니다. 어쨌든 따라하고 싶다면, 그것은 단지 하나의 수업이고 여기에 있습니다.스크롤 뷰에서 애니메이션 크기 조절
https://github.com/mrjjwright/TUILayout.
예제 코드에서 사용자는 왼쪽 아래의 파란색 버튼을 클릭하고 모든 행은 사용자가 일부 행을 재정렬하고 삭제할 수있는 크기로 부드럽게 축소됩니다 (이 예에서 행을 마우스 오른쪽 버튼으로 클릭하면 액션) 등 ... 그리고 나서 사용자는 파란색 버튼을 다시 클릭하여 행을 다시 원래 크기로 토글합니다.
에서 크기를 조정하는 동안 먼저 행을 나타내는 모델 객체의 크기를 조정하고 TUIScrollView에서 contentSize를 다시 계산하고 설정 한 다음 모든 새보기를 순환합니다 (예 : 10 개의 뷰가 축소보기에 맞춰 짐) dequeueReusableView 및 addSubview가 10 번 호출 됨) 마지막으로 모든 뷰의 프레임을 layoutSubviews의 크기와 위치에 맞춰 애니메이션으로 만듭니다.
결과적으로 스크롤 막대가 스크롤 막대가 더 이상 표시되지 않는 크기로 정확하게 축소되고 화면에있는보기가 축소 된 크기로 부드럽게 애니메이션되지만 visibleRect에 적합하게 새로 추가 된 하위보기는 훨씬 나중에 하나의 하위 뷰로 간주됩니다.
새롭게 추가 된 모든 하위보기는 화면에 있던보기에 뒤쳐져서 애니메이션이 모두 함께 발생하지 않는 이유를 알 수 없습니다. 나는 CATransactions를 포함하여 운이없는 다양한 콤보를 많이 시도했다. CAScrollLayer가 어떻게 작동하는지 또는 누군가가 이것을 통해 나를 생각하도록 도울 수 있는지 궁금합니다.
좀 더 일반적인 문제는보기를 재생하는 스크롤보기에서 애니메이션 크기 조절을 부드럽게 처리하는 방법이며, iOS 세계에서 몇 가지 다른 표를보고 더 많은 영감을 얻었지만 더 많이 찾고 있습니다.
감사합니다.