项目介绍:
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 直接下载:
