iOS 下拉菜单

最近在做代码重构,发现之前写的下拉菜单不够灵活,所以决定再写一个可以灵活定制的下拉菜单。

先上代码 Demo

本Demo提供如下几种显示方式:
iOS 下拉菜单_第1张图片
显示方式.png

效果示例:

iOS 下拉菜单_第2张图片
导航栏显示.PNG
iOS 下拉菜单_第3张图片
视图显示.PNG

相关属性设置:

@class SLDropdownMenu, SLSearchBar;

@protocol SLDropdownMenuDelegate 

@optional
- (void)dropdownMenu:(SLDropdownMenu *)menu didSelectedRow:(NSInteger)row;

@end

@interface SLDropdownMenu : UIView

/**
 标题,若有dataSource,则默认为下拉列表数据第一个值。
 */
@property (nonatomic, copy) NSString *title;
@property (nonatomic) UIFont *titleFont;
@property (nonatomic) UIColor *titleColor;

/**
 附加图片,默认为nil。
 */
@property (nonatomic, strong) UIImage *accessoryImage;

/**
 附加图片排列方式,默认SLImageAlignmentDefault
 */
@property (nonatomic, assign) SLImageAlignment imageAlignment;

/**
 图片大小,默认CGSizeMake(22.f, 18.f)。
 */
@property (nonatomic, assign) CGSize imageSize;

/**
 下拉列表数据源。
 */
@property (nonatomic, strong) NSArray *dataSource;

/**
 模糊背景视图颜色透明度,默认黑色,透明度为0.f
 */
@property (nonatomic, assign) CGFloat dimmingViewColorAlpha;

/**
 弹出框宽度,默认为menu本身宽度,如果大于屏幕宽度,则按屏幕宽度布局。
 */
@property (nonatomic, assign) CGFloat popoverViewWidth;

/**
 弹出框背景颜色,默认[UIColor clearColor]
 */
@property (nonatomic, strong) UIColor *popoverViewBackgroundColor;

/**
 弹出框边框线宽度,默认为0.f
 */
@property (nonatomic, assign) CGFloat popoverViewBorderWidth;

/**
 弹出框边框线颜色,默认[UIColor clearColor]
 */
@property (nonatomic, strong) UIColor *popoverViewBorderColor;

/**
 弹出框显示模式,默认为SLPopoverViewModelDefault
 */
@property (nonatomic, assign) SLPopoverViewModel popoverModel;

/**
 气泡(三角形)高度,默认10.f
 */
@property (nonatomic, assign) CGFloat bubbleHeiht;

/**
 气泡绘制线条颜色,默认为弹出框边框线颜色
 */
@property (nonatomic, strong) UIColor *bubbleStrokeColor;

/**
 气泡填充颜色,默认[UIColor clearColor]
 */
@property (nonatomic, strong) UIColor *bubbleFillColor;

/**
 气泡显示位置,默认靠右:SLBubblePositionRight
 */
@property (nonatomic, assign) SLBubblePosition bubblePosition;

/**
 下拉列表内边距,默认UIEdgeInsetsZero。
 */
@property (nonatomic, assign) UIEdgeInsets tableViewEdgeInsets;
@property (nonatomic, strong) UIColor *tableViewBackgroundColor;
@property (nonatomic, strong) UIColor *tableViewSeparatorColor;
@property (nonatomic, assign) BOOL showSeparatorLine;

/**
 显示搜索框,默认NO(不显示)
 */
@property (nonatomic, assign) BOOL showSearchBar;
@property (nonatomic, strong) SLSearchBar *searchBar;

@property (nonatomic, weak) id delegate;

/**
 已选中行。
 */
@property (nonatomic, assign, readonly) NSInteger selectedRow;

/**
 设置选择行
 
 @param row 选择的行,若大于或等于dataSource的count,则无效。
 */
- (void)setSelectRow:(NSInteger)row;

@end

具体实现请查阅代码:Demo

你可能感兴趣的:(iOS 下拉菜单)