DMPagerViewController 是一个 UIViewController 子类,它模拟了 iOS 中 Twitter 和 Tinder 客户端使用的导航系统。它还添加了一些特殊效果,如滚动时图标着色色度渐变和滚动时的页面视差效果。它还提供了一些配置选项,您可以在 .h 文件中轻松查看。因为一张图片胜过千言万语,这是一个展示该类的短 gif。
要运行示例项目,请克隆仓库,并在项目中运行 pod install
。
然后您可以创建一个新的 DMPagerViewController,它包含以下子视图控制器
UIViewController * vc1 = ...;
UIViewController * vc2 = ...;
UIViewController * vc3 = ...;
self.pagerController = [[DMPagerViewController alloc] initWithViewControllers: @[vc1,vc2,vc3]];
您的子视图控制器必须符合 DMPagerViewControllerProtocol
协议,以便向导航栏返回适当的条目(仅在 .useNavigationBar
设置为 YES 时使用)。
因此,每个视图控制器都必须实现
- (DMPagerNavigationBarItem *)pagerItem {
DMPagerNavigationBarItem *item;
UIImage *itemIcon = ...;
NSAttributedString *itemTitle = ...;
item = [DMPagerNavigationBarItem newItemWithText:itemTitle andIcon: itemIcon];
item.renderingMode = DMPagerNavigationBarItemModeOnlyText;
return item;
}
使用 .renderingMode
,您可以决定为指定的项显示什么(图标、图标和文本或仅文本)。
在编写程序间移动时,您可以选择三种不同的过渡动画来使用 -setPageIndex:animated:
。
typedef NS_ENUM(NSInteger, DMPagerViewControllerAnimation) {
// Standard UIScrollView animation
DMPagerViewControllerAnimationStandard,
// Ease In+Out animation on scroll
DMPagerViewControllerAnimationEaseInOut,
// Animation with final bounce
DMPagerViewControllerAnimationBounceEnd,
// Animation with initial+final bounce
DMPagerViewControllerAnimationBounceStartEnd
};
导航栏也可以自定义(它是一个 UIView):您可以选择您希望用于导航栏项的过渡效果(从颜色角度):请参阅 .colorizeMode
(DMPagerNavigationBarItemColorize
)。您还可以通过 .style
属性(DMPagerNavigationBarStyle
)决定导航栏本身的布局。
您可以从导航堆栈中将其推进去,也可以将其放入根窗口中。您还可以通过 .navigationBar
属性访问导航栏配置。
它与 iOS 8 一起运行良好。应该可以在 iOS 7 中工作,但我还没有测试。
Daniele Margutti 邮箱:[email protected] 网站:danielemargutti.com
DMPagerViewController 在 MIT 许可证下提供。有关更多信息,请参阅 LICENSE 文件。