欢迎光临
我们一直在努力

MKActioinSheet:多功能,多样式

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

MKActioinSheet:多功能,多样式

项目介绍:

MKActionSheet

多样式 ActionSheet

  • 高斯模糊效果
  • 支持无标题、无取消按钮样式
  • 支持带默认选中模式
  • 支持多选模式
  • 支持带 icon 图片样式
  • 支持多按钮,可设置最大显示数量(支持小数),超过最大数量,以tableView模式显示
  • 支持 Model 或 NSDictionary 数组初始化
  • 支持 block 和 delegate




添加

  • cocoapods
    pod ‘MKActionSheet’, ‘~> 1.1.1’

  • Manually (手动导入)
    只需将 MKActionSheet 文件添加到项目中即可

用法 详细用法参见demo

  • 支持 block 和 delegate

[Objective-C] 查看源文件 复制代码

//单选 block
- (void)showWithBlock:(MKActionSheetBlock)block;
//多选 block
- (void)showWithMultiselectBlock:(MKActionSheetMultiselectBlock)multiselectblock;

//delegate
- (void)showWithDelegate:(id <MKActionSheetDelegate>)delegate;

/**
 *  单选 delegage
 *  @param buttonIndex 被点击按钮的 index
 */
- (void)actionSheet:(MKActionSheet *)actionSheet didClickButtonAtIndex:(NSInteger)buttonIndex;

/**
 *  多选样式 的delegate 点击确认后 返回 选中的 array, 如果有 取消 按钮,取消按钮返回的 array 为nil
 *  @param array       被选中的button 对应数据的 array
 */
- (void)actionSheet:(MKActionSheet *)actionSheet selectArray:(NSArray *)array;

/**
 *  带icon图片,imageKey 对应的 图片类型是 URL方式, 调用此回调 设置图片
 *  @param button      要设置图片的 button
 *  @param imageUrl    图片的URL, 即 object 对应 的 imageKey 字段
 */
- (void)actionSheet:(MKActionSheet *)actionSheet button:(UIButton *)button imageUrl:(NSString *)imageUrl;

  • 普通样式,多参数初始化, block

[Objective-C] 查看源文件 复制代码

 MKActionSheet *sheet = [[MKActionSheet alloc] initWithTitle:@"初始化title为nil,将显示不带title样式。title" buttonTitleArray:@[@"button0", @"button1", @"button2",@"button3",@"button4"]];
sheet.destructiveButtonIndex = 3;
[sheet showWithBlock:^(MKActionSheet *actionSheet, NSInteger buttonIndex) {
    NSLog(@"buttonIndex:%ld",(long)buttonIndex);
}];

  • 普通样式,数组初始化, delegate

[Objective-C] 查看源文件 复制代码

MKActionSheet *sheet = [[MKActionSheet alloc] initWithTitle:nil buttonTitleArray:@[@"button0", @"button1", @"button2",@"button3",@"button4"]];
sheet.selectedIndex = 2;
[sheet showWithDelegate:self];

  • 对象数组初始化,支持 model 和 NSDictionary 数组。titleKey是对象中用来显示按钮title对应的字段。

[Objective-C] 查看源文件 复制代码

MKActionSheet *sheet = [[MKActionSheet alloc] initWithTitle:@"对象数组初始换" objArray:self.modelArray titleKey:@"titleStr" selectType:MKActionSheetSelectType_multiselect];
[sheet showWithMultiselectBlock:^(MKActionSheet *actionSheet, NSArray *array) {
    NSLog(@"array:%@",array);
}];

  • selectType 用于控制选择类型,不同类型的UI样式也不同

[Objective-C] 查看源文件 复制代码

typedef NS_ENUM(NSInteger, MKActionSheetSelectType) {
    MKActionSheetSelectType_common    = 1,      //默认样式
    MKActionSheetSelectType_selected,           //默认带有一个 已选择的 选项
    MKActionSheetSelectType_multiselect,        //多选 样式
};

  • 带icon图标的样式

[Objective-C] 查看源文件 复制代码

MKActionSheet *sheet = [[MKActionSheet alloc] initWithTitle:nil objArray:self.dicArray titleKey:@"titleStr" selectType:MKActionSheetSelectType_multiselect];
[sheet setImageKey:@"imageUrl" imageValueType:MKActionSheetButtonImageValueType_url];
sheet.buttonImageBlock = ^(MKActionSheet* actionSheet, UIButton *button, NSString *imageUrl){
    [button sd_setImageWithURL:[NSURL URLWithString:imageUrl] forState:UIControlStateNormal placeholderImage:[self getDefaultIcon]];
        };
[sheet showWithMultiselectBlock:^(MKActionSheet *actionSheet, NSArray *array) {
    NSLog(@"actionSheet:%@",actionSheet);
    NSLog(@"array:%@",array);
}];
//
// setImageKey:(NSString *)imageKey imageValueType:(MKActionSheetButtonImageValueType)imageValueType;
//imageKey:对象中对应图片的字段, imageValueType:imageKey字段对应的类型
typedef NS_ENUM(NSInteger, MKActionSheetButtonImageValueType) {
    MKActionSheetButtonImageValueType_none = 0,        //default
    MKActionSheetButtonImageValueType_image,
    MKActionSheetButtonImageValueType_name,
    MKActionSheetButtonImageValueType_url,
};

  • 带icon图标的样式,imageValueType 为 url 时加载图片的方法。
    • 由于大家可能在项目中使用的加载图片的框架不一样,为了不增加使用MKActionSheet控件的成本。将加载url图片的方法 用block和delegate 回调出来让大家自己实现。以下是以比较常用的SDWebimage为例。

[Objective-C] 查看源文件 复制代码

//button: 要被设置icon的按钮, imageUrl:图片的URL, 既前面设置的 ImageKey 的值,且imageValueType 为 MKActionSheetButtonImageValueType_url。
//
//block
sheet.buttonImageBlock = ^(MKActionSheet* actionSheet, UIButton *button, NSString *imageUrl){
    [button sd_setImageWithURL:[NSURL URLWithString:imageUrl] forState:UIControlStateNormal placeholderImage:[self getDefaultIcon]];
};
//
//delegete
- (void)actionSheet:(MKActionSheet *)actionSheet button:(UIButton *)button imageUrl:(NSString *)imageUrl{
    [button sd_setImageWithURL:[NSURL URLWithString:imageUrl] forState:UIControlStateNormal placeholderImage:[self getDefaultIcon]];
}

可以根据自己的需求定制UI[Objective-C] 查看源文件 复制代码

/**  custom UI */
//title
@property (nonatomic, copy) NSString *title;                        /*!< 标题 */
@property (nonatomic, strong) UIColor *titleColor;                  /*!< 标题颜色 */
@property (nonatomic, strong) UIFont *titleFont;                    /*!< 标题字体 */
@property (nonatomic, assign) NSTextAlignment titleAlignment;       /*!< 标题 对齐方式 */
//button
@property (nonatomic, strong) UIColor *buttonTitleColor;            /*!< 按钮 titile 颜色 */
@property (nonatomic, strong) UIFont  *buttonTitleFont;             /*!< 按钮 字体 */
@property (nonatomic, assign) CGFloat buttonOpacity;                /*!< 按钮透明度 */
@property (nonatomic, assign) CGFloat buttonHeight;                 /*!< default: 48.0f*/
@property (nonatomic, assign) MKActionSheetButtonTitleAlignment buttonTitleAlignment;   /*!< button title 对齐方式 */
//destructive Button
@property (nonatomic, assign) NSInteger destructiveButtonIndex;     /*!< 特殊按钮位置 */
@property (nonatomic, strong) UIColor *destructiveButtonTitleColor; /*!< 特殊按钮颜色 */
//cancel Title
@property (nonatomic, copy) NSString  *cancelTitle;                 /*!< 取消按钮 title */
//action sheet
@property (nonatomic, assign) CGFloat titleMargin;                  /*!< title 边距 */
@property (nonatomic, assign) CGFloat animationDuration;            /*!< 动画化时间 default: 0.3f */
@property (nonatomic, assign) CGFloat blurOpacity;                  /*!< 毛玻璃透明度 default: 0.0f */
@property (nonatomic, assign) CGFloat blackgroundOpacity;           /*!< 灰色背景透明度 default: 0.3f */
@property (nonatomic, assign,getter=isNeedCancelButton) BOOL needCancelButton;              /*!< 是否需要取消按钮 */
@property (nonatomic, assign) CGFloat maxShowButtonCount;           /*!< 显示按钮最大个数,支持小数 默认-1,全部显示*/
@property (nonatomic, assign) NSInteger selectedIndex;       /*!< 默认选中的button index, 带默认选中样式 */
//object Array
@property (nonatomic, copy) NSString *titleKey;                     /*!< 传入为object array 时 指定 title 的字段名 */
@property (nonatomic, copy) NSString *imageKey;                     /*!< 传入为object array 时 指定button image对应的字段名 */
@property (nonatomic, assign) MKActionSheetButtonImageValueType imageValueType;   /*!< imageKey对应的类型:image、imageName、imageUrl */

建议可以根据需求自定义几种样式的类调用方法,在项目中直接使用。例:
[Objective-C] 查看源文件 复制代码

+ (void)sheetWithTitle:(NSString *)title buttonTitleArray:(NSArray *)buttonTitleArray destructiveButtonIndex:(NSInteger)destructiveButtonIndex block:(MKActionSheetBlock)block{
    MKActionSheet *sheet = [[MKActionSheet alloc] initWithTitle:title buttonTitleArray:buttonTitleArray];
    sheet.needCancelButton = YES;
    sheet.buttonTitleFont = [UIFont systemFontOfSize:17];
    sheet.buttonTitleColor = [UIColor redColor];
    sheet.buttonOpacity = 1;
    sheet.buttonHeight = 40.0f;
    sheet.destructiveButtonTitleColor = [UIColor grayColor];
    sheet.animationDuration = 0.2f;
    sheet.blackgroundOpacity = 0.0f;
    sheet.blurOpacity = 0.7f;
    sheet.tag = 200;
    [sheet showWithBlock:block];
}

V1.1.0

  • 高斯模糊效果
  • 支持无标题、无取消按钮样式
  • 支持带默认选中模式
  • 支持多选模式
  • 支持带 icon 图片样式
  • 支持多按钮,可设置最大显示数量(支持小数),超过最大数量,以tableView模式显示
  • 支持 Model 或 NSDictionary 数组初始化
  • 支持 block 和 delegate
  • 添加 cocoapod

V1.0.3

  • MKActionSheet 基础功能,高斯模糊效果。
  • 支持无title、无取消按钮样式。
  • 支持自定义UI样式
  • 支持 block 和 delegate

DEMO 直接下载:

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