2010-05-12 3 views
1

사진 앱과 마찬가지로 이미지 뷰어를 개발하고 있습니다.UIImageViews가 포함 된 UIScrollView의 회전을 올바르게 처리하는 방법은 무엇입니까?

인터넷에서로드 된 이미지로 페이징 기능을 사용할 수있는 UIScrollView이므로 부분을 수정했습니다. Scroll View와 내부의 각 ImageView에는 자동 크기 조정 마스크 플래그가 모두 설정되어 있습니다.

회전 중에 크기 조정이 어떻게 발생하는지 처음 보았을 때 좋았지 만 일단 스크롤 뷰와 상호 작용하기 시작하면 프로그래밍 방식으로 contentView의 크기를 변경해야한다는 것을 알았습니다. didRotateFromInterfaceOrientation을 구현하여이를 수행했습니다. 내 View Controller에서. 상호 작용이 제대로 행동으로

[self.scrollView setContentSize:CGSizeMake(numberOfImages * portraitWidth, [scrollView bounds].size.height)]; 

, 나는 그때 두 번째 사진을보기 및 회전 된 경우, 1 차 및 2 차 사진 모두의 부분이 화면에 표시 될 수 있음을 발견했다. 나는 또한 contentOffset을 바꿀 필요가 있었다.

나는이 두 가지 방법으로 - scrollRectToVisible : animated : 메서드를 사용하여 UIScrollView를 수정하고 contentOffset 속성을 직접 설정하려고 시도했습니다. 오리엔테이션의 변화에 ​​대한 "1 단계"및 "2 단계"응답 구현에이 코드를 사용하여 실험했습니다. 예 :

-(void)didAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
[self.scrollView setContentOffset:CGPointMake(currentlyViewedPhotoIndex * largeImageHeight,0) animated:YES]; 

모든 경우에 janky가 지옥처럼 보입니다. 두루마리가 분명하게 보입니다. 아니면 그냥 점프합니다. 우와 우와 우아 우의! 사진 앱과 똑같이 작동하도록이 작업을 수행 할 수있는 방법이 있습니까?

답변

4

회전을 시작하기 직전에 UIScrollView를 숨기고 현재 표시된 이미지가 포함 된 UIImageView를 만들었습니다. 회전하면 그 이미지가 멋지고 예쁘게 회전합니다. 회전이 완료되면 ImageView를 제거하고 스크롤보기를 숨김 해제합니다.

업데이트 - 오늘 (iOS 6 이후) 언제든지 읽고 계시다면 UIPageViewController를 사용하고 transitionStyle을 UIPageViewControllerTransitionStyleScroll으로 설정하십시오.

1

같은 문제에 직면했을 때 나는 약간 다른 것을했습니다. willRotateToInterfaceOrientation:duration:에서 현재 표시된 하위보기를 제외한 모든 UIScrollView 하위보기를 숨기고 didRotateFromInterfaceOrientation: 하위보기를 숨 깁니다.

관련 문제