博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 下拉列表控件
阅读量:6548 次
发布时间:2019-06-24

本文共 3034 字,大约阅读时间需要 10 分钟。

自己封装了一个简单的下拉列表控件,会根据控件所在屏幕位置自动计算列表是该向上还是向下弹出,调用简单。

效果图

调用方式

// 数据源    EBDropdownListItem *item1 = [[EBDropdownListItem alloc] initWithItem:@"1" itemName:@"item1"];    EBDropdownListItem *item2 = [[EBDropdownListItem alloc] initWithItem:@"2" itemName:@"item2"];    EBDropdownListItem *item3 = [[EBDropdownListItem alloc] initWithItem:@"3" itemName:@"item3"];    EBDropdownListItem *item4 = [[EBDropdownListItem alloc] initWithItem:@"4" itemName:@"item4"];    EBDropdownListView *dropdownListView = [[EBDropdownListView alloc] initWithDataSource:@[item1, item2, item3, item4]];    dropdownListView.frame = CGRectMake(20, 100, 130, 30);    // 设置当前显示第几项,默认为0    dropdownListView.selectedIndex = 2;    // 字体默认14    //dropdownListView.font = [UIFont systemFontOfSize:14];    // 默认颜色blackColor    //dropdownListView.textColor = [UIColor blackColor];    [dropdownListView setViewBorder:0.5 borderColor:[UIColor grayColor] cornerRadius:2];    [self.view addSubview:dropdownListView];        [dropdownListView setDropdownListViewSelectedBlock:^(EBDropdownListView *dropdownListView) {        NSString *msgString = [NSString stringWithFormat:                               @"selected name:%@  id:%@  index:%ld"                               , dropdownListView.selectedItem.itemName                               , dropdownListView.selectedItem.itemId                               , dropdownListView.selectedIndex];                msgLabel.text = msgString;            }];复制代码

代码结构

  • 定义一个Model类,用于存放下拉列表的数据
@interface EBDropdownListItem : NSObject@property (nonatomic, copy, readonly) NSString *itemId;@property (nonatomic, copy, readonly) NSString *itemName;- (instancetype)initWithItem:(NSString*)itemId itemName:(NSString*)itemName NS_DESIGNATED_INITIALIZER;@end复制代码
#import "EBDropdownListView.h"@implementation EBDropdownListItem- (instancetype)initWithItem:(NSString*)itemId itemName:(NSString*)itemName {    self = [super init];    if (self) {        _itemId = itemId;        _itemName = itemName;    }    return self;}- (instancetype)init {    return [self initWithItem:nil itemName:nil];}@end复制代码
  • 创建EBDropdownListView继承自UIView
typedef void (^EBDropdownListViewSelectedBlock)(EBDropdownListView *dropdownListView);@interface EBDropdownListView : UIView// 字体颜色,默认 blackColor@property (nonatomic, strong) UIColor *textColor;// 字体默认14@property (nonatomic, strong) UIFont *font;// 数据源@property (nonatomic, strong) NSArray *dataSource;// 默认选中第一个@property (nonatomic, assign) NSUInteger selectedIndex;// 当前选中的DropdownListItem@property (nonatomic, strong, readonly) EBDropdownListItem *selectedItem;- (instancetype)initWithDataSource:(NSArray*)dataSource;- (void)setViewBorder:(CGFloat)width borderColor:(UIColor*)borderColor cornerRadius:(CGFloat)cornerRadius;- (void)setDropdownListViewSelectedBlock:(EBDropdownListViewSelectedBlock)block;复制代码

代码都挺简单的,可以设置字体大小、颜色、数据源、选中项。 默认是没有边框的,可以通过setViewBorder 方法去设置。EBDropdownListViewSelectedBlock选中下拉列表项时的回调。

备注:

该控件两点比较重要的地方: 1.点击控件弹出的下拉框是放在UIWindows上的,这样就不会被父视图或其他视图所遮挡。 2.下拉框弹出的起始位置是根据控件所在屏幕上的位置去计算的。

转载地址:http://eegdo.baihongyu.com/

你可能感兴趣的文章
vsftpd服务简介
查看>>
Maven 入门之单元测试
查看>>
MySql学习笔记(八):explain之extra
查看>>
一、Linux应用程序基础 1、应用程序与系统命令的关系 文件位置 主要用途...
查看>>
职场必备!学会这4个技巧,便可轻松操作Excel!
查看>>
红米手机3S 3X获取ROOT权限的经验
查看>>
年度必读:2018最具突破性人工智能论文Top 10
查看>>
如何操作PDF内容编辑
查看>>
.net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
查看>>
邮件安全与社会工程学
查看>>
Cheese : A tool to use your camera
查看>>
安装类问题
查看>>
js 查找文章中的关键字,并标红
查看>>
Java面试题-基础篇五
查看>>
死磕 java集合之TreeMap源码分析(四)-内含彩蛋
查看>>
华为路由器简单配置默认路由
查看>>
Tcp/IP详解
查看>>
是什么让我流眼泪
查看>>
linux系统下集成开发工具选择
查看>>
11.6 -11.9 MariaDB,Apache 安装
查看>>