수색…


소개

UIPageViewController는 사용자가 스 와이프 제스처를 사용하여 여러보기간에 쉽게 전환 할 수있는 기능을 제공합니다. UIPageViewController를 만들려면 UIPageViewControllerDataSource 메서드를 구현해야합니다. 여기에는 현재 UIPageViewController 전후의 UIPageViewController와 presentationCount 및 presentationIndex 메서드를 모두 반환하는 메서드가 포함됩니다.

통사론

  1. UIPageViewControllerTransitionStyle
  2. UIPageViewControllerNavigationOrientation
  3. UIPageViewControllerSpineLocation
  4. UIPageViewControllerNavigationDirection

비고

Apple 개발자 참조 여기

프로그래밍 방식으로 수평 페이징 UIPageViewController 만들기

  1. UIPageViewController에 의해 관리되는 뷰 컨트롤러의 초기화 배열입니다. UIPageViewController 데이터 소스 메소드로 작업 할 때 뷰 컨트롤러를 식별하는 데 사용될 속성 identifier 가있는 기본 뷰 컨트롤러 클래스를 추가합니다. 뷰 컨트롤러가 그 기본 클래스로부터 상속 받도록하십시오.
UIViewController *firstVC = [[UIViewController alloc] init]; 
firstVC.identifier = 0  
UIViewController *secondVC = [[UIViewController alloc] init];   
secondVC.identifier = 1
NSArray *viewControllers = [[NSArray alloc] initWithObjects: firstVC, secondVC, nil];
  1. UIPageViewController 인스턴스를 생성합니다.
UIPageViewController *pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
                                                                           navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
                                                                                         options:nil];
  1. 데이터 소스는 UIPageViewControllerDataSource 프로토콜을 구현 UIPageViewControllerDataSource 현재 클래스입니다.
pageViewController.dataSource = self;
  1. setViewControllers 는 첫 번째 뷰 컨트롤러 만 추가하고 다음은 데이터 소스 메서드를 사용하여 스택에 추가됩니다.
if (viewControllers.count) {
    [pageViewController setViewControllers:@[[viewControllers objectAtIndex:0]]
                                 direction:UIPageViewControllerNavigationDirectionForward
                                  animated:NO
                                completion:nil];
}
  1. UIPageViewController를 자식 뷰 컨트롤러로 추가하여 부모 뷰 컨트롤러 appearancerotation 이벤트에서 받도록합니다.
 [self addChildViewController:pageViewController];
 pageViewController.view.frame = self.view.frame;
 [self.view addSubview:pageViewController.view];
 [pageViewController didMoveToParentViewController:self];
  1. UIPageViewControllerDataSource 메소드 구현하기
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
      viewControllerBeforeViewController:(UIViewController *)viewController
{
    index = [(Your View Controler Base Class *)viewController identifier];
    index--;
    return [self childViewControllerAtIndex:index];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
       viewControllerAfterViewController:(UIViewController *)viewController
{
    index = [(Your View Controler Base Class *)viewController identifier];
    index++;
    return [self childViewControllerAtIndex:index];
}

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
{
    return [viewControllers count];
}

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
{
    return index;
}
  1. 인덱스를 사용하여 뷰 컨트롤러를 반환하는 유틸리티 메소드입니다. 인덱스가 범위를 벗어나면 nil을 반환합니다.
- (UIViewController *)childViewControllerAtIndex:(NSInteger)index
{
    if (index <= ([viewControllers count] - 1)) {
        return [viewControllers objectAtIndex:index];
    } else {
        return nil;
    }
}

수평 페이지 뷰 컨트롤러 (무한 페이지)를 만드는 간단한 방법

  1. 새 프로젝트를 만들어 보겠습니다. 더 나은 데모를 위해 Single View Application을 선택합니다.

여기에 이미지 설명을 입력하십시오.

  1. 페이지보기 컨트롤러를 스토리 보드로 드래그하면 변경해야 할 두 가지 사항이 있습니다.
    1. 페이지 뷰 컨트롤러를 초기보기 컨트롤러로 설정
    2. 스크롤 할 전환 스타일 변경

여기에 이미지 설명을 입력하십시오.

  1. 그리고 UIPageViewController 클래스를 만든 다음 스토리 보드에서 페이지 뷰 컨트롤러의 맞춤 클래스로 설정해야합니다.

  2. 이 코드를 UIPageViewController 클래스에 붙여 넣으면 색이있는 무한 페이징 된 응용 프로그램을 가져와야합니다. :)

    class PageViewController: UIPageViewController, UIPageViewControllerDataSource {
    
        override func viewDidLoad() {
            self.dataSource = self
            let controller = createViewController()
            self.setViewControllers([controller], direction: .forward, animated: false, completion: nil)
        }
    
        func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
            let controller = createViewController()
            return controller
        }
    
        func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
            let controller = createViewController()
            return controller
        }
    
        func createViewController() -> UIViewController {
            var randomColor: UIColor {
                return UIColor(hue: CGFloat(arc4random_uniform(360))/360, saturation: 0.5, brightness: 0.8, alpha: 1)
            }
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let controller = storyboard.instantiateViewController(withIdentifier: "View Controller")
            controller.view.backgroundColor = randomColor
            return controller
        }
    }
    

이것이 최종 프로젝트의 모습입니다. 스크롤 할 때마다 다른 색상의 뷰 컨트롤러가 생성됩니다.

여기에 이미지 설명을 입력하십시오.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow