FWPopupView 4.2.2

FWPopupView 4.2.2

xfg 维护。



  • xfg

IOS之弹窗 --Swift 4.2/Objective-C版本(Swift 和 Objective-C 版本分别实现了不同的功能!!!)

平台  语言  许可协议

使用说明:

1、弹窗基类分别使用了OC和Swift来实现,同时OC和Swift版本分别实现了几个不同的弹窗效果;
2、Objective-C类需要继承弹窗基类时必须选择该库的Objective-C版本中的基类;
3、两个库可以同时存在一个项目中,建议两个库同时使用。

温馨提示:

1、同一窗口内目前只支持弹窗一个弹窗,如果需要同时展示两个弹窗,建议与系统或者其他自定义弹窗配合使用;
2、如需两个弹窗接连使用,请保证第一个弹窗完全消失再调用第二个弹窗;
3、鉴于方法或者属性可能跟着版本改动,因此强烈建议使用该库时封装一层后再使用;
4、如需在弹窗上展示SVProgressHUD,可设置:[SVProgressHUD setMaxSupportedWindowLevel:UIWindowLevelStatusBar+1];

支持pod导入:

use_frameworks!
pod 'FWPopupView'
注意:
1、如出现 [!] Unable to find a specification for 'FWPopupView' 错误 或 看不到最新的版本,
  可执行 pod repo update 命令更新一下本地pod仓库。
2、use_frameworks! 的使用:
(1)纯OC项目中,通过cocoapods导入OC库时,一般都不使用use_frameworks!
(2)纯swift项目中,通过cocoapods导入swift库时,必须使用use_frameworks!
(3)只要是通过cocoapods导入swift库时,都必须使用use_frameworks!
(4)使用动态链接库dynamic frameworks时,必须使用use_frameworks!

简单使用:(说明:可下载demo具体查看,分别有OC、Swift的demo)

/// 类初始化方法
///
/// - Parameters:
///   - title: 标题
///   - detail: 描述
///   - confirmBlock: 确定按钮回调
/// - Returns: self
open class func alert(title: String,
                     detail: String,
               confirmBlock: @escaping FWPopupItemHandler) -> FWAlertView
                          
/// 类初始化方法
///
/// - Parameters:
///   - title: 标题
///   - itemTitles: 点击项标题
///   - itemBlock: 点击回调
///   - cancenlBlock: 取消按钮回调
///   - property: FWSheetView的相关属性
/// - Returns: self
open class func sheet(title: String?,
                 itemTitles: [String],
                  itemBlock: @escaping FWPopupItemHandler,
               cancenlBlock: @escaping FWPopupVoidBlock,
                   property: FWSheetViewProperty?) -> FWSheetView

Swift

let alertView = FWAlertView.alert(title: "标题", detail: "描述描述描述描述") { (index) in
    print("点击了确定")
}
alertView.show()
let sheetView = FWSheetView.sheet(title: "测试", 
                             itemTitles: ["Sheet0", "Sheet1", "Sheet2", "Sheet3"], 
                              itemBlock: { (index) in
    print("Sheet:点击了第\(index)个按钮")
}, cancenlBlock: {
    print("点击了取消")
})
sheetView.show()

OC:

FWAlertView *alertView = [FWAlertView alertWithTitle: @"标题" 
                                              detail: @"描述描述描述描述" 
                                        confirmBlock:^(NSInteger index) {
    NSLog(@"点击了确定");
}];
[alertView show];
FWSheetView *sheetView = [FWSheetView sheetWithTitle: @"标题" 
                                          itemTitles: @[@"Sheet0", @"Sheet1", @"Sheet2", @"Sheet3"] 
                                           itemBlock:^(NSInteger index) {
    NSLog(@"Sheet:点击了第 %ld 个按钮", (long)index);
} cancenlBlock:^{
    NSLog(@"点击了取消");
}];
[sheetView show];

效果:

更新记录:

• v2.0.4:

  • 支持图形加载完成后用户添加代理事件灰度背景默认值从原来的 alpha=0.6 改为 alpha=0.5;
  • 在原始类初始化方法中添加输入框键盘类型参数:UIKeyboardType(由于方法可能随着版本改动,所以建议进行封装使用);

• v2.0.5

  • 修复弹窗隐藏时未设置原始窗口为keywindow的问题;

• v2.0.6

  • 原始FWPopupItemHandler改为FWPopupItemClickedBlock,增加反馈当前弹窗参数;
  • FWItemType加入参数canAutoHide:点击该按钮后会自动隐藏弹窗。这样做能够适应更多的弹窗场景;

• v2.0.7

  • 支持单独设置某个按钮的文本、背景颜色;

• v3.0.0(大版本)

  • 弹窗基类重构:通过设置视图展示位置+偏移量来确定弹窗真正需要展示的位置;提供了多种可选动画类型;
  • 由于OC类不能继承Swift类,因此弹窗基类实现了两种语言。Swift版本:FWPopupView;OC版本:FWPopupBaseView;
  • FWAlertView/FWSheetView/FWDateView使用基类提供的动画类型;
  • 新增FWMenuView,可实现类似QQ/微信首页右上角菜单;
  • 其他细节修改;

• v3.0.1

  • FWPopupItemClickedBlock回调增加标题参数(注:由于不打算维护多个回调,所以未考虑兼容旧版回调,建议进行封装使用);
  • 修复FWSheetView未设置标题时有额外间距的问题;

• v3.0.2

  • 增加:确保前一次弹窗销毁的处理机制;
  • FWDateView开放UIDatePicker,外部可以针对不同需求进行修改;

• v3.0.3

  • 修复xib加载View方式时,继承弹窗基类FWPopupView崩溃的问题;
  • FWSheetView适配iPhoneX(在安全区域显示);

• v3.0.5

  • 为避免点击某个弹窗按钮后需要继续弹出另一个弹窗出错问题,改为弹窗消失后执行回调;
  • 添加支持弹簧动画效果;

• v3.0.6:

  • 添加弹窗状态:FWPopupState;
  • 根据状态对应的进行回调,这样可以根据实际使用来调整;

• v3.0.7:

  • FWMenuView新增支持修改背景色等相关属性;

• v3.0.8:

  • FWAlertView带输入框输入支持密码安全类型;

• v3.0.9:

  • FWSheetView支持修改“取消”按钮的名称;

• v3.1.1:

  • 添加控件:FWCustomSheetView,该控件实现了单选效果;

• v3.1.3:

  • 修改回调策略:点击某个按钮后立即调用对应的回调。旧版本代码无需修改,也不会受到影响;

• v3.1.5:

  • 修改FWPopupView弹起时改变了状态栏颜色的问题;
  • 修改FWCustomSheetView复用时产生的bug;

• v4.0.0(大版本)

  • 使用SnapKit库重构了弹窗基类及部分弹窗视图;
  • 支持横竖屏切换;
  • 支持多个弹窗同时存在(详细请查看:同时显示两个弹窗的演示);
  • 升级到Swift4.2;

• v4.0.2

  • 解决app进入后台时隐藏弹窗可能出现界面卡死问题;
  • 解决多次调用显示、隐藏的安全判断(可能会导致约束出错问题);

• v4.0.3

  • 增加hiddenViews添加视图的条件判断,解决某些视图已经创建,但还未显示过一次依然会加入hiddenViews的问题;

• v4.0.4

  • 支持重新设置弹窗视图size;
  • 新增两种弹窗状态:didAppearButCovered、didAppearAgain;
  • 新增 titleFont、buttonFont、detailFont 属性;

• v4.0.5

  • FWAlertView、FWSheetView、FWDateView 中相关字体默认改为不加粗,即:boldSystemFont 改为:systemFont;
  • FWPopupItem 中新增 itemTitleFont 属性,该属性优先级大于全局变量,如需使用该变量可使用:初始化方法3;

• v4.0.6

  • 解决某个类中同时存在两个非懒加载方式的弹窗成员变量,前一个点击外部隐藏时会影响另一个弹窗显示的问题;
  • FWSheetView:FWSheetViewProperty 可设置取消按钮的字体颜色、大小以及背景颜色;

• v4.0.8

  • 解决 xcode11 中 FWPopupWindow 单例初始化问题;
  • 其它细节优化;

• v4.0.9

  • 部分组件适配 ios13 的深色模式;

• v4.1.1

  • FWPopupView 新增渐变背景色功能:backgroundLayerColors;
  • FWMenuView 细节优化;

• v4.1.2

  • 解决 xcode11.x 新建(含 SceneDelegate)的项目中弹窗不显示的问题;

• v4.1.3

  • 原 FWPopupWindow 类改名:FWPopupSWindow(主要为了解决 OC 项目同时引入 FWPopupView、FWPopupViewOC 库时需要使用 FWPopupWindow 时类重名的问题);
  • FWPopupSWindow 新增 removeAllPopupView 方法:隐藏全部的弹窗(包括当前不可见的弹窗);

• v4.1.4

  • 解决还原 keywindow 时未判断原记录的 window 是否 keywindow 的问题;

结尾语:

  • 在使用过程中发现 bug 请提交 issues 或加入 FW 问题反馈群:670698309(此群只接受 FW 相关组件问题);
  • 有新的需求欢迎提出;