gpt4 book ai didi

ios - PageViewController 和 Orientation 改变

转载 作者:行者123 更新时间:2023-11-28 17:40:49 25 4
gpt4 key购买 nike

我有一些关于 UIPageViewControllers 的策略问题。它似乎完全符合我的要求,但有几件事我不确定。我想也许有人可以分享一两个 gem 。 :)

所以这里是:我想使用 PageViewCtl 以纵向或横向模式显示内容,但是,无论是什么,它们都必须在同一个 Controller 中(即具有相同的 View )设备的方向。原因是内容必须以这样的方式(横向)缩放,即内容的两个“页面”同时缩放,而不是分开缩放。在这一点上,我真的看不出如何在 PageViewCtl 中处理它,因为据我所知,您不能在 2 个 View Controller 之间共享 View 。那么有人对这个问题有任何见解吗?非常感谢!

最佳答案

我从 Erica Sadun (https://github.com/erica/iOS-5-Cookbook) 那里偷了这个:

    // Update interface to the given page
- (void) fetchControllersForPage: (uint) requestedPage orientation: (UIInterfaceOrientation) orientation
{
BOOL sideBySide = [self useSideBySide:orientation];
int numberOfPagesNeeded = sideBySide ? 2 : 1;
int currentCount = self.viewControllers.count;

uint leftPage = requestedPage;
if (sideBySide && (leftPage % 2)) leftPage--;

// Only check against current page when count is appropriate
if (currentCount && (currentCount == numberOfPagesNeeded))
{
if (pageNumber == requestedPage) return;
if (pageNumber == leftPage) return;
}

// Decide the prevailing direction by checking the new page against the old
UIPageViewControllerNavigationDirection direction = (requestedPage > pageNumber) ? UIPageViewControllerNavigationDirectionForward : UIPageViewControllerNavigationDirectionReverse;
[self updatePageTo:requestedPage];

// Update the controllers
NSMutableArray *pageControllers = [NSMutableArray array];
SAFE_ADD(pageControllers, [self controllerAtPage:leftPage]);
if (sideBySide)
SAFE_ADD(pageControllers, [self controllerAtPage:leftPage + 1]);

[self setViewControllers:pageControllers direction: direction animated:YES completion:nil];
}

// Entry point for external move request
- (void) moveToPage: (uint) requestedPage
{
[self fetchControllersForPage:requestedPage orientation:(UIInterfaceOrientation)[UIDevice currentDevice].orientation];
}

#pragma mark Delegate

- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation
{
NSUInteger indexOfCurrentViewController = 0;
if (self.viewControllers.count)
indexOfCurrentViewController = ((UIViewController *)[self.viewControllers objectAtIndex:0]).view.tag;
[self fetchControllersForPage:indexOfCurrentViewController orientation:orientation];

BOOL sideBySide = [self useSideBySide:orientation];
self.doubleSided = sideBySide;

UIPageViewControllerSpineLocation spineLocation = sideBySide ? UIPageViewControllerSpineLocationMid : UIPageViewControllerSpineLocationMin;
return spineLocation;
}

给她一些爱。并注意 super 聪明的“if (sideBySide && (leftPage % 2)) leftPage--;”,它确保左页始终是奇数页。

-A

关于ios - PageViewController 和 Orientation 改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8194119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com