如何在 iOS 中创建滑动导航(在 Objective-C 中)
Posted
技术标签:
【中文标题】如何在 iOS 中创建滑动导航(在 Objective-C 中)【英文标题】:How to create swipe navigation in iOS (in Objective-C) 【发布时间】:2016-01-22 11:21:14 【问题描述】:我想构建像这些图片中显示的那样的滑动导航。总共有 4 个水平放置的标题。
swipe navigation
它们如下。
-
“历史”
“规则”
“专业版”
“条款和条件”
如果我正在阅读“历史”并从右向左滑动,则应显示“规则”。
如果我在“规则”上,并从左向右滑动,那么它应该显示“历史”
谁能指导我如何做到这一点?
谢谢。
【问题讨论】:
这正是您想要的。 github.com/maxep/MXSegmentedPager 使用故事板示例更容易实现。 谢谢@Rushisangani .....这就是我想要的。 【参考方案1】:您发布的链接是静态屏幕截图,对描述您想要做什么没有多大帮助。
我认为您所描述的是UIPageViewController
的正常行为,设置为幻灯片过渡而不是卷曲过渡。
在 Xcode 中搜索“PhotoScroller”。这将指向一个演示应用程序,该应用程序说明了我认为您所追求的效果。该应用程序比您需要的更复杂,因为它支持捏缩放和图片平铺渲染,但您可以忽略这些内容。
【讨论】:
谢谢@duncan .....我会检查 UIPageViewController。并且不知道如何创建动画 gif。今后如有必要,我将上传动画 gif。再次感谢:)【参考方案2】:我也会推荐一个 UIPageViewController。这是一个简单的实现:
@interface SwipeViewController : UIViewController <UIPageViewControllerDataSource>
@property (nonatomic, strong) UIPageViewController *pageViewController;
@property (nonatomic, strong) NSArray <UIViewController*> *viewControllers;
@end
@implementation SwipeViewController
- (void)viewDidLoad
[super viewDidLoad];
// add page view controller
[self.pageViewController willMoveToParentViewController:self];
[self.view addSubview:self.pageViewController.view];
[self addChildViewController:self.pageViewController];
[self.pageViewController didMoveToParentViewController:self];
// set the first view controller as the displayed view controllers (requires an array of exactly one view controller)
[self.pageViewController setViewControllers:@[self.viewControllers.firstObject] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
// array of 4 random colored view controllers
- (NSArray <UIViewController*>*)viewControllers
if (!_viewControllers)
_viewControllers = (
NSMutableArray *viewControllers = [NSMutableArray new];
for (int i = 0; i < 4; i++)
UIViewController *aViewController = [UIViewController new];
aViewController.view.backgroundColor = [UIColor colorWithRed:(arc4random()%255)/255. green:(arc4random()%255)/255. blue:(arc4random()%255)/255. alpha:1];
[viewControllers addObject:aViewController];
viewControllers;
);
return _viewControllers;
- (UIPageViewController *)pageViewController
if (!_pageViewController)
_pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
_pageViewController.dataSource = self;
return _pageViewController;
- (nullable UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
NSInteger index = [self.viewControllers indexOfObject:viewController];
return index > 0 ? self.viewControllers[index-1] : nil;
- (nullable UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
NSInteger index = [self.viewControllers indexOfObject:viewController];
return index + 1 < self.viewControllers.count ? self.viewControllers[index+1] : nil;
@end
【讨论】:
谢谢@casey ...我会在几个小时内尝试这个然后回来。以上是关于如何在 iOS 中创建滑动导航(在 Objective-C 中)的主要内容,如果未能解决你的问题,请参考以下文章