PagedAlertController 0.1.7

PagedAlertController 0.1.7

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2016 年 9 月

Daniel Cardona 维护。



  • 作者
  • Daniel Cardona Rojas

示例

要运行示例项目,请克隆仓库,并首先从示例目录运行 pod install

要求

安装

PagedAlertController 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod "PagedAlertController"

用法

PagedAlertController 在弹窗样式的模态窗口中呈现用户定义的视图(默认为 300x200),添加页面和子弹。

它自身仅添加导航功能,验证和内容设计由用户定义。

  • 将文件导入 xcode 文件组的可重用组件
  • 在Storyboard中创建两个视图控制器,将 PagedAlertController 类分配给其中一个。
  • 在其余的视图控制器中导入 PagedAlertController.h 并实现 PagedAlertDelegate 和 PagedAlertDataSource 协议。
  • 确保从 presenting viewcontroller 或 segue 中,PagedAlertController 的显示样式为 'over current context'。

协议的详细描述

/* -------------------------- DELEGATE ------------------------- */
@protocol PagedAlertDelegate <NSObject>

@optional
-(void)pagedAlert: (UIView*)view didTurnToPageAtIndex:(NSUInteger)pageIndex;
-(void)willStartPagedAlertController:(UIViewController*) pagedController;
-(BOOL)pagedAlert:(UIView*)view shouldFlipToNextPageFromPage:(NSUInteger)integer;
-(BOOL)pagedAlert: (UIView*)view shouldFlipToPreviousPageFromPage:(NSUInteger)integer;


//TODO: especify page index where this happens
-(void)willDismissPagedAlertControllerAtIndex:(NSUInteger)index;
-(void)didDismissPagedAlertControllerAtIndex:(NSUInteger)index;


-(BOOL)shouldReversePreviousButtonLayout:(NSUInteger)index;
-(BOOL)shouldReverseNextButtonLayout:(NSUInteger)index;

@end

/* -------------------------- DATA SOURCE ------------------------- */
@protocol PagedAlertDataSource <NSObject>

-(NSUInteger)numberOfPagesForPagedAlertController: (UIViewController*) pagedController;

//TODO: generalize so the PagedAertView can have a varying size viewForAlertPage:(NSInteger)index contentDimension:(CGRect) frame;
- (UIView *)viewForAlertPage:(NSUInteger)index;

-(NSString*)titleForPageAtIndex:(NSUInteger)index;


-(BOOL)allowsSwipe;


@optional
//Change these to properties?

// Not usigin wrap around indexing means the PagedViewController will be dismissed if tapping the previous button on first page
//or the next button on final page.
-(BOOL)usesWrappAroundIndexing;
-(BOOL)showsPageBullets;
//Used to validate input
-(UIView*)updateViewOnPageFlipForwardRejection:(UIView*)view pageIndex:(NSUInteger)index;
-(UIView*)updateViewOnPageFlipBackwardRejection:(UIView*)view pageIndex:(NSUInteger)index;
-(UIColor*)titleColorForPageAtIndex:(NSUInteger)index;
//An array of strings indicating the button titles for each page (should have equal length to number of pages)
-(NSArray*)pagedAlertControllerButtonTitles;
-(NSArray*)pagedAlertControllerButtonIcons;

@end

/* -------------------------- INTERFACE ------------------------- */
@interface PagedAlertViewController : UIViewController

-(void)startPagedAlert;
-(void)stopPagedAlert;
-(void)moveToPageAtIndex:(NSUInteger)idx;
-(void)moveToNextPage;
-(void)moveToPreviousPage;

@property (strong,nonatomic) UIColor* bulletColor;
@property (strong,nonatomic) UIColor* pageControlBackgroundColor;
@property (strong,nonatomic) UIPageControl* pageControl;


@property (weak,nonatomic) id<PagedAlertDelegate> delegate;
@property (weak,nonatomic) id<PagedAlertDataSource> dataSource;

@end

待办事项

  • 一旦完善,创建一个 Cocoapod
  • 使用 UITapGestureRecognizer 在外部区域点击时使 PagedAlertController 消失。
  • 去除 UIPageViewController 的回弹效果。
  • 在 PageAlertView xib 上定义约束。
  • 泛化内容视图数据源方法,以便可以构建任意大小的 PagedAlertController。
  • 添加其他视觉选项,如选择模糊背景等。
  • 修复:当按钮添加图标时,按钮的用户交互区域会减小。
  • 修复:通过 Storyboard 添加的视图不会在容器(例如第 6 页的内联视图)中居中,而通过程序添加的视图则会。

`

作者

Daniel Cardona Rojas,[email protected]

许可证

PagedAlertController 在 MIT 许可证下可用。有关更多信息,请查看 LICENSE 文件。