2017-09-13 14 views
6

는 내가 "내비게이션 바"로 "adjustedContentInset"속성 값이 변경이 스크롤 동안 수축하기 때문에, 아이폰 OS 11에서 예상대로이 코드는 꽤 작업을 수행 것으로 나타났습니다 :iOS 11 : 큰 제목 표시 줄에서 "adjustedContentInset"이 변경되면 맨 위로 스크롤 하시겠습니까?

CGFloat contentInsetTop=[scrollView contentInset].top; 

if (@available(iOS 11.0, *)) 
{ 
    contentInsetTop=[scrollView adjustedContentInset].top; 

} 
//// 

[scrollView setContentOffset:CGPointMake(0, -contentInsetTop) animated:YES]; 

... 예를 들어 140으로 시작한 다음 최소 스크롤 오프셋 이상으로 88으로 줄일 수 있습니다. 즉, 이것을 호출하면 실제로 맨 위로 스크롤되지 않습니다.

을 제외하고 UIScrollView로드 할 때의 메모리 오프셋 원본을 보존에서, 그것은, 지속적으로 "adjustedContentInset을"아무리 맨 위로 스크롤 실제로 않도록하기 위해 나중에이 값을 복구하는 방법은 무엇입니까?

답변

1

현재 iOS 11에서이 작업을 수행 할 수있는 방법이 없습니다. 이렇게하는 유일한 방법은 초기 값을 캡처하여 탐색/뷰 컨트롤러의 수명 동안 저장하는 것입니다.

달리 말하면 답변을 업데이트 하겠지만, 불행히도 기본 iOS 11 버전에서는 깨질 것입니다.