IT TIP

전환 후 제약 조건을 적용하는 iOS 8 UIPageViewController

itqueen 2020. 11. 19. 22:45
반응형

전환 후 제약 조건을 적용하는 iOS 8 UIPageViewController


내 앱에는 사용자가 앱에 대해 알아보기 위해 스 와이프하는 다중 창 자습서 스타일보기가 있습니다. 이것은 이 튜토리얼에서 설명한대로 매우 많이 구현 됩니다. iOS 7과 8 모두에 대해 구현 한 후 작동 방식을 비교하고 후자의 문제를 찾고 있습니다. 여기서 Xcode 6 GM을 실행하고 있습니다.

전환이 완료된 후 UIPageViewController가 뷰를 렌더링하는 것 같습니다. 무슨 일이 일어나는지보기 위해 델리게이트 메서드를 덮어 썼습니다.

- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray *)pendingViewControllers
{
   NSLog(@"Frame size before: %@", NSStringFromCGRect([(UIViewController*)pendingViewControllers[0] view].frame));
}

- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{
   NSLog(@"Frame size after: %@", NSStringFromCGRect([(UIViewController*)previousViewControllers[0] view].frame));
}

다음은 샘플 출력입니다.

Frame size before: {{0, 0}, {600, 600}}
Frame size after: {{0, 0}, {320, 568}}

이는 다음과 같이 나타납니다. 왼쪽으로 스 와이프하여 다음보기를 가져오고 새보기의 하단에 32pt 공백을 확인합니다. 전환이 완료되면 적절한 레이아웃으로 이동합니다.

이것은 아마도 iOS 8의 버그입니까? 이 시점에서 나는 모두 추측이 불가능합니다.


뷰 컨트롤러의 레이아웃 가이드가 아닌 뷰에 제약을 두어야한다는 것을 알아 냈습니다. 이렇게하면 뷰 컨트롤러가 PageViewController에서 전환하기 전에 설정 한 제약 조건을 준수합니다.

다음과 같이 할 수 있습니다.

제약 예

"여백에 제한"을 선택 취소해야합니다.


이 문제가있는 사람이라면 누구나 "마진 대비"(iOS 8의 새로운 기능) 뷰를 레이아웃하는 것처럼 보였습니다.

대신에:

여기에 이미지 설명 입력

사용하다:

여기에 이미지 설명 입력


나는 며칠 동안 이것으로 어려움을 겪고 있습니다.

스토리 보드에서 페이지 ViewController를 인스턴스화하여 구현하려고했습니다. 명확한 크기 조정이 발생했습니다. 프레임 크기 확인

  1. pageViewController : viewControllerAfterViewController
  2. pageViewController : willTransitionToViewControllers
  3. pageViewController : didFinishAnimating : previousViewControllers

프레임 크기는 항상 13 호출 사이에서 변경 됩니다. 때로는 2시 이전 과 때로는 이후.

스토리 보드도 사용하는 경우 페이지 UI 요소를 자체 XIB 파일로 추출하고 IB에서 제약 조건을 설정 한 다음 initWithNibName을 호출하여 페이지를 생성하여 문제를 해결할 수있었습니다 .

완전한 답은 아니지만 생산적인 느낌을 받았습니다. 도움이 되었기를 바랍니다.


나에게 해결책은 tableView의 상단을 superview에 고정하는 것이 었습니다. Editor-> Pin-> Top Space To SuperView (iOS8)


iOS 8의 버그이지만 해결 방법을 찾았습니다.

스토리 보드의 상태 표시 줄 위에 빈보기를 추가합니다. 보기의 높이는 이동중인 개체의 y 값과 같아야합니다.

올바른 제약 이미지

참고 URL : https://stackoverflow.com/questions/25791183/ios-8-uipageviewcontroller-applying-constraints-after-transitions

반응형