欢迎光临
我们一直在努力

高仿微信的悬浮小窗口

建站超值云服务器,限时71元/月

高仿微信的悬浮小窗口

项目介绍:

Demo地址:https://github.com/Rogue24/JPSuspensionEntrance

简介

高仿微信悬浮小窗口的小框架

目前功能:
    1.滑动返回时可选择该控制器是否缩小成浮窗;
    2.浮窗可自由拖动,拖动结束后可自动贴边;
    3.一键创建、替换、关闭浮窗;
    4.自适应横竖屏、键盘弹出;
    5.可自定义缓存(控制器信息、默认位置)方案;
    6.可自定义展开/闭合的提示音
    7.可作用于有或无导航栏的情况

注意:
    1.目前仅作用于NavigationController

之后的更新内容:
    1.Swift版本;
    2.适配自定义的转场动画
    3.更多的控制器整合的浮窗;
    4.更多的参数设定;
  

如何使用

获取单例

// 使用单例的形式进行全局操作
[JPSuspensionEntrance sharedInstance]; 

// 也可以使用单例宏获取
// JPSEInstance

绑定 NavigationController

// 绑定了则其delegate及interactivePopGestureRecognizer.delegate都为JPSuspensionEntrance代理
// 切换navigationController需要重新绑定最新的navigationController
JPSEInstance.navCtr = self.navigationController;

// 设置绑定的navigationController的根控制器和没有遵守<JPSuspensionEntranceProtocol>协议的子控制器是否隐藏导航栏
JPSEInstance.isHideNavBar = NO;

配置可成为浮窗的控制器

// push的控制器 需要遵守<JPSuspensionEntranceProtocol>协议才可以变为浮窗
// JPSuspensionEntranceProtocol的代理方法:

// 1.是否隐藏导航栏(必须实现)
- (BOOL)jp_isHideNavigationBar;

// 2.缓存信息(可选)
- (NSString *)jp_suspensionCacheMsg;

// 3.浮窗logo图标(可选)
- (UIImage *)jp_suspensionLogoImage;

展开、闭合浮窗

/**
 * 展开当前浮窗
 */
- (void)pushViewController:(UIViewController<JPSuspensionEntranceProtocol> *)targetVC;

/**
 * 闭合/创建/替换浮窗
 */
- (void)popViewController:(UIViewController<JPSuspensionEntranceProtocol> *)targetVC;

设置浮窗提示音

// 是否可以播放提示音 默认为no
JPSEInstance.canPlaySound = YES;

// 可在该block中配置展开时的提示音
// 默认为系统的id为1397提示音
JPSEInstance.playSpreadSoundBlock = ^{

};

// 可在该block中配置闭合时的提示音
// 默认为系统的id为1396提示音
JPSEInstance.playShrinkSoundBlock = ^{

};

配置缓存方案

static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{

    // 自定义缓存方案
    // 当需要缓存时则实现这两个block,会在适当的时机进行回调,缓存可自行另处清除

    // 1.关键信息的缓存(例如URL),当浮窗被新建、替换时会调用
    JPSEInstance.cacheMsgBlock = ^(NSString *cacheMsg) {
        // 缓存操作,可参考Demo
    };

    // 2.浮窗最新的位置的缓存,当浮窗位置发生改变时会调用
    JPSEInstance.cacheSuspensionFrameBlock = ^(CGRect suspensionFrame) {
        // 缓存操作,可参考Demo
    };

});

初始化配置缓存浮窗

static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    // 初始化缓存浮窗
    // 获取缓存信息,有缓存关键信息的情况下才创建
    NSString *cachaMsg = [[NSUserDefaults standardUserDefaults] stringForKey:JPSuspensionCacheMsgKey];
    if (cachaMsg) {
        // 1.创建浮窗的控制器
        ViewController *vc = [[ViewController alloc] init];
        vc.title = cachaMsg;
        vc.isHideNavBar = YES;
        
        // 2.获取缓存的浮窗位置或使用默认值
        CGFloat wh = [JPSuspensionEntrance sharedInstance].suspensionViewWH;
        // Demo中使用了NSUserDefaults缓存x、y值
        CGFloat x = [[NSUserDefaults standardUserDefaults] floatForKey:JPSuspensionDefaultXKey];
        CGFloat y = [[NSUserDefaults standardUserDefaults] floatForKey:JPSuspensionDefaultYKey];

        // 创建浮窗
        [JPSEInstance setupSuspensionViewWithTargetVC:vc suspensionFrame:CGRectMake(x, y, wh, wh)];
    }
});

安装

JPSuspensionEntrance 可通过CocoaPods安装,只需添加下面一行到你的podfile:

pod 'JPSuspensionEntrance'

反馈地址

邮箱:zhoujianping24@hotmail.com
博客:https://www.jianshu.com/u/2edfbadd451c

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 高仿微信的悬浮小窗口
分享到: 更多 (0)