14

UIPageViewController を使用して画像をフルスクリーンで表示しています。サブビュー/子として UIPageController に追加された UIViewController には、ImageView を使用して画像が表示されます。問題は、画像が全画面表示されないことです。代わりに、ページコントロールビューのドントが下部に表示され、そのスペースが完全に無駄になります。添付画像をご確認ください。

ここに画像の説明を入力

ここにコードがあります

self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];

self.pageController.dataSource = self;
[[self.pageController view] setFrame:[[self view] bounds]];

NewsItemViewController *initialViewController = [self viewControllerAtIndex:0];

NSArray *viewControllers = [NSArray arrayWithObject:initialViewController];

[self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

[self addChildViewController:self.pageController];
[[self view] addSubview:[self.pageController view]];
[self.pageController didMoveToParentViewController:self];

ここで、NewsItemViewController は画像とテキストを表示する UIViewController であり、MainViewController は MainViewController で UIPageViewControllerDataSource プロトコルと必要なメソッドを実装します。

物事を全画面表示する方法が必要だと思います。

*** MainViewController もストーリーボードの一部です。

4

6 に答える 6

21

奇妙。ドキュメントは言う:

「ページ インジケーターのサポート」の両方のメソッドが実装され、ページ ビュー コントローラーの遷移スタイルが UIPageViewControllerTransitionStyleScroll である場合、ページ インジケーターが表示されます。

これらの 2 つの方法は次のとおりです。

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController {
}

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController { 
}

これら 2 つのデータ ソース メソッドを実装していますか? もしそうなら、おそらくそれらを削除すれば、ページ コントロール (ドット) を手動で削除する必要はありませんか? 簡単なテストは、

UIPageViewControllerTransitionStyleScroll

UIPageViewControllerTransitionStylePageCurl

ページ コントロール インジケーターのドットが消えるかどうかを確認します。(もちろん、hide メソッドをコメントアウトした後です。)

于 2013-11-16T19:17:03.290 に答える
14

UIPageViewController ドットは、次のメソッドを実装した場合にのみ表示されます。

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController;

コードをチェックインします。また、このメソッドでゼロを返すと、ドットが非表示になります (UIPageControl)

于 2015-02-27T16:50:24.850 に答える
7

Swift 2.2互換コードを追加しています

for view in self.view.subviews {
    if view.isKindOfClass(UIScrollView) {
        view.frame = UIScreen.mainScreen().bounds
    } else if view.isKindOfClass(UIPageControl) {
        view.backgroundColor = UIColor.clearColor()
    }
}

これは Swift 4 互換のソリューションで、viewDidLayoutSubviews

for view in self.view.subviews {
    if view.isKind(of:UIScrollView.self) {
        view.frame = UIScreen.main.bounds
    } else if view.isKind(of:UIPageControl.self) {
        view.backgroundColor = UIColor.clear
    }
}
于 2016-05-10T08:03:41.067 に答える
0

ページャーコントローラーをそのように設定します

self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
self.pageController.dataSource = self;
[[self.pageController view] setFrame:[[self view] bounds]];

そして実装すると、このメソッドは1より大きい値を返す必要があります

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController {
    // The selected item reflected in the page indicator.
    return 2;
}

下部スペースのギャップが削除され、ページ コントロールが表示されなくなりました :)

于 2016-04-06T14:16:39.340 に答える