ActionSheetPicker-3.0 基础使用指南:iOS 选择器控件详解
ActionSheetPicker-3.0 项目地址: https://gitcode.com/gh_mirrors/ac/ActionSheetPicker-3.0
一、ActionSheetPicker 简介
ActionSheetPicker-3.0 是一个功能强大的 iOS 选择器控件,它提供了多种样式的选择器实现方式,可以轻松集成到你的 iOS 应用中。这个控件的主要特点包括:
- 支持单列、多列选择器
- 提供自定义按钮和回调功能
- 支持多种自定义样式
- 兼容不同 iOS 版本
- 提供丰富的交互选项
二、基础使用方式
2.1 单列选择器实现
最基本的用法是创建一个单列字符串选择器。以下是实现步骤:
- 准备数据源数组
- 定义完成和取消的回调块
- 显示选择器
// 1. 准备数据
NSArray *colors = @[@"红色", @"绿色", @"蓝色", @"橙色"];
// 2. 定义回调块
ActionStringDoneBlock doneBlock = ^(ActionSheetStringPicker *picker, NSInteger selectedIndex, id selectedValue) {
NSLog(@"选择器: %@", picker);
NSLog(@"选中索引: %ld", (long)selectedIndex);
NSLog(@"选中值: %@", selectedValue);
};
ActionStringCancelBlock cancelBlock = ^(ActionSheetStringPicker *picker) {
NSLog(@"选择器已取消");
};
// 3. 显示选择器
[ActionSheetStringPicker showPickerWithTitle:@"选择颜色"
rows:colors
initialSelection:0
doneBlock:doneBlock
cancelBlock:cancelBlock
origin:sender];
2.2 多列选择器实现
对于需要多列选择的场景,可以使用 ActionSheetMultipleStringPicker
:
NSArray *rows = @[
@[@"C", @"Db", @"D", @"Eb", @"E", @"F", @"Gb", @"G", @"Ab", @"A", @"Bb", @"B"],
@[@"大调", @"小调", @"多利亚调式", @"西班牙吉普赛调式"]
];
NSArray *initialSelection = @[@2, @4];
[ActionSheetMultipleStringPicker showPickerWithTitle:@"选择音阶"
rows:rows
initialSelection:initialSelection
doneBlock:^(ActionSheetMultipleStringPicker *picker,
NSArray *selectedIndexes,
NSArray *selectedValues) {
NSLog(@"选中索引: %@", selectedIndexes);
NSLog(@"选中值: %@", [selectedValues componentsJoinedByString:@", "]);
}
cancelBlock:^(ActionSheetMultipleStringPicker *picker) {
NSLog(@"选择器已取消: %@", picker);
} origin:(UIView *)sender];
三、高级自定义功能
3.1 自定义按钮样式
你可以完全自定义完成和取消按钮的样式:
// 自定义完成按钮文本
ActionSheetStringPicker *picker = [[ActionSheetStringPicker alloc] initWithTitle:@"选择区块"
rows:colors
initialSelection:0
doneBlock:doneBlock
cancelBlock:cancelBlock
origin:sender];
[picker setDoneButton:[[UIBarButtonItem alloc] initWithTitle:@"确定"
style:UIBarButtonItemStylePlain
target:nil
action:nil]];
[picker showActionSheetPicker];
// 自定义取消按钮为图片按钮
UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeCustom];
[cancelButton setImage:[UIImage imageNamed:@"cancel.png"] forState:UIControlStateNormal];
[cancelButton setFrame:CGRectMake(0, 0, 32, 32)];
[picker setCancelButton:[[UIBarButtonItem alloc] initWithCustomView:cancelButton]];
3.2 添加自定义按钮
除了默认的完成和取消按钮,你还可以添加额外的自定义按钮:
ActionSheetStringPicker *colorPicker = [[ActionSheetStringPicker alloc] initWithTitle:@"选择颜色"
rows:colors
initialSelection:0
target:nil
successAction:nil
cancelAction:nil
origin:sender];
// 添加带固定值的按钮
[colorPicker addCustomButtonWithTitle:@"默认值" value:@([colors indexOfObject:colors.lastObject])];
// 添加带代码块的按钮
[colorPicker addCustomButtonWithTitle:@"特殊操作" actionBlock:^{
NSLog(@"执行自定义操作");
}];
// 添加带选择器的按钮
[colorPicker addCustomButtonWithTitle:@"其他操作" target:self selector:@selector(customAction)];
3.3 点击外部区域行为控制
通过 tapDismissAction
属性可以控制点击选择器外部区域时的行为:
picker.tapDismissAction = TapActionSuccess; // 点击外部视为成功
picker.tapDismissAction = TapActionCancel; // 点击外部视为取消
picker.tapDismissAction = TapActionNone; // 点击外部无反应(默认)
四、界面样式自定义
4.1 背景颜色与模糊效果
// 设置选择器背景颜色
picker.pickerBackgroundColor = [UIColor blackColor];
// 设置背景模糊效果(数值越大越模糊)
picker.pickerBlurRadius = @(10);
4.2 其他自定义属性
ActionSheetPicker 提供了丰富的自定义选项:
// 工具栏自定义
picker.toolbar.backgroundColor = [UIColor blueColor];
// 标题属性
picker.title = @"请选择";
picker.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};
// 隐藏取消按钮
picker.hideCancel = YES;
// 设置支持的设备方向
picker.supportedInterfaceOrientations = UIInterfaceOrientationMaskPortrait;
五、最佳实践建议
-
数据准备:对于大型数据集,建议提前准备好数据源数组,避免在选择器显示时处理数据。
-
回调处理:在回调块中更新UI时,确保在主线程执行。
-
内存管理:在包含大量自定义按钮或复杂回调时,注意避免循环引用。
-
用户体验:根据应用风格统一选择器的视觉样式,保持一致性。
-
错误处理:在回调中处理可能的异常情况,如数组越界等。
通过以上介绍,你应该已经掌握了 ActionSheetPicker-3.0 的基本使用方法和高级自定义技巧。这个控件提供了极大的灵活性,可以满足大多数选择器场景的需求,同时保持代码的简洁性和可维护性。
ActionSheetPicker-3.0 项目地址: https://gitcode.com/gh_mirrors/ac/ActionSheetPicker-3.0
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考