앱이 다시 시작될 때 Uiscrollview의 줌 레벨과 위치를 동적으로 복원하는 방법은 무엇입니까?
-
19-08-2019 - |
문제
내 응용 프로그램은 a로 구성됩니다 UIImageView
내부 a UIScrollView
, 그리고 나는 그것의 큰 이미지를 표시합니다. 스크롤보기를 사용하면 사용자가 이미지를 확대/축소하기 위해 꼬집어지고 모든 것이 잘 작동하는 것 같습니다.
그러나 내 응용 프로그램이 종료 된 다음 다시 시작되면 UIScrollView
이미지를 원래 줌 레벨로 다시 표시합니다 (현재 "Aspect Fit"모드로 스케일링하여 전체 이미지를 표시하도록 설정되어 있음).
나는 정말로 내 앱을 다시 시작하고 UIScrollView
앱이 종료되었을 때 설정된 것과 동일한 매개 변수로 다시 열립니다. 따라서 내 이미지가 현재 최대로 확대되고 왼쪽 하단까지 스크롤되면 앱을 다시 열 때보기가되어야합니다.
어떻게 할 수 있습니까?
해결책
UiscrollView를 프로그래밍 방식으로 확대하는 방법을 찾았습니다. 이렇게하면 시작시 원하는 줌 레벨을 설정하는 데 도움이 될 수 있습니다.
샘플 코드는 ZoomscrollView 클래스와 함께 필요한 확대 / 축소 매직을 캡슐화하고 UiscrollView Zooming Works가 어떻게 (및 이유에 대한 자세한 토론을 할 수 있습니다. github.com/andreyvit/scrollingmadness/.
다른 팁
뷰의 .Transform 속성을 확인하십시오. 확대 된 경우 수정해야합니다. 다음 출시시 저장하고 복원하십시오.
누군가가 얼마 전에 이것을 물었습니다. 그러나 나는 당신이 좋아하지 않을 것 같지 않습니다 대답. 바라건대 당신은 더 나은 것을 얻을 수 있기를 바랍니다.
나는 다음과 같이합니다 : 당신이 그만두면 줌 레벨 (myscrollview.zoomscale)과 contentView 프레임 원점을 저장하십시오.
다시 열면 ZoomScale을 설정할 수 있습니다. 또한 경계가 올바르지 않기 때문에 컨텐츠 크기를 새 줌 레벨로 설정해야합니다.
[myScrollview setZoomScale:savedZoomScale];
CGSize newsize = CGSizeMake(origsize.width * savedZoomScale,
origsize.height * savedZoomScale);
myScrollview.contentSize = newsize;
오프셋을 설정하려면 :
[myScrollView setContentOffset:savedFrameOrigin animated:YES];