很多时候使用一个弹层来提供一个小界面进行提示、选择什么的功能是很有用而且美观的,比如很多广告就是这种弹层的形式...有了弹层以后,我们不需要每次要显示一个东西的时候都跳转到另一个界面中去,当只用显示一点小东西的时候,弹层的价值远远大于新开一个界面,之前使用到了第三方的弹层KLCPopup,当时的需求是要能在弹层上填写内容以及添加按钮,试了几种弹层后发现这种最能满足需求也挺好用的,于是就用了下来,这里说一说简单的使用方式吧。
KLCPopup(github原地址):https://github.com/jmascia/KLCPopup
首先要在一个项目中使用第三方类库,我是用的CocoaPods进行管理的
安装好CocoaPods后,在项目的Podfile中输入
代码语言:javascript复制pod ‘KLCPopup’, '~>1.0'
然后在终端,也就是命令行输入工具中找到项目文件夹,输入pod install,等待安装完毕就可以了。之后,在项目的prefix.pch中导入KLCPopup:
代码语言:javascript复制#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <KLCPopup.h>
#endif
就可以在项目的任何地方直接使用KLCPopup了,不需要再次进行声明。 要生成一个KLC弹层很简单,只需要一行代码,但在此之前,需要先初始化一个视图用来显示在弹层中:
代码语言:javascript复制PopupViewController *popupView = [[PopupViewController alloc] init];
其中PopupViewController是自己创建的一个视图控制器,在这个视图控制器的类中具体设计你要显示的内容,加图片也好文本框也好按钮也好,都在这里面编辑,还有界面的大小也是。之后开始把这个视图控制器变成一个弹层:
代码语言:javascript复制KLCPopup *popupView = [KLCPopup popupWithContentView:popupView.view
showType:KLCPopupShowTypeBounceInFromTop
dismissType:KLCPopupDismissTypeBounceOutToBottom
maskType:KLCPopupMaskTypeDimmed
dismissOnBackgroundTouch:YES
dismissOnContentTouch:NO];
这就是创建弹层的过程,里面涉及很多参数,这里进行一一说明: 首先是popupWithContentView,这个参数就是要显示的view,也就是刚才初始化的那个自定义的视图控制器,但是这个参数的类型是view而不是viewController,所以这里要填进去的是popupView.view而不是popupView本身。
第二个参数showType,用来确定弹层的显示方式,也就是怎样弹出来,这里可以选择很多方式:
- KLCPopupShowTypeBounceIn(FromBottom/Left/Right/Top):从底部/左边/右边/上面弹出
- KLCPopupShowTypeSlideIn(FromBottom/Left/Right/Top):从底部/左边/右边/上面滑出
- KLCPopupShowTypeFadeIn:淡出
- KLCPopupShowTypeGrowIn:渐变出
- KLCPopupShowTypeShrinkIn:缩放出
第三个参数dismissType是选择弹层的退出方式,也就是怎样弹出去,这里同样有很多种方式,跟show的参数都是一一对应的,把In换成Out就是弹出的参数了。
第四个参数maskType,这个参数是决定弹层底部界面的样式,也就是说,当你从一个界面点出弹层时,原来那个界面会在弹层的下方,而这个参数就可以让你决定下方那个界面是什么样子,比如变模糊。这里参数KLCPopupMaskTypeDimmed和KLCPopupMaskTypeClear就是决定是否变得模糊。
第五个参数dismissOnBackgroundTouch,参数是布尔型的,决定当你点击下方界面时,也就是点击弹层界面以外的部分时,是否退出弹层。
第六个参数dismissOnContentTouch,同样是布尔型,决定当点击弹层本身时,是否退出弹层。
创建弹层的过程到这里就结束了,基本上要显示什么,怎么出现怎么退出,什么时候退出都已经决定好了,接下来显示弹层就好了:
代码语言:javascript复制[popupView show];
这样就可以显示刚才创建好的弹层了。弹层出现后,除了刚才设定的点击背景或弹层本身时退出弹层外,也可以设定在其他时候退出,比如点击弹层上的一个按钮时调用方法退出,只要在点击按钮时运行:
代码语言:javascript复制[popupView dismiss:YES];
就可以了,这两种是最简单的显示和退出弹层,制作者还提供了其他的显示和退出方式:
show:
代码语言:javascript复制- (void)showWithLayout:(KLCPopupLayout)layout;
- (void)showAtCenter:(CGPoint)center inView:(UIView*)view;
- (void)showWithDuration:(NSTimeInterval)duration;
dismiss:
代码语言:javascript复制- (void)dismiss:(BOOL)animated;
(void)dismissAllPopups;
- (void)dismissPresentingPopup; // UIView category
这些我还没用过,有机会使用后再来说明吧,具体的可以在上面的github原地址中查看。