最近在做代碼重構(gòu)蒿往,發(fā)現(xiàn)之前寫的下拉菜單不夠靈活嘀倒,所以決定再寫一個可以靈活定制的下拉菜單剩檀。
先上代碼 Demo
本Demo提供如下幾種顯示方式:
效果示例:
相關(guān)屬性設(shè)置:
@class SLDropdownMenu, SLSearchBar;
@protocol SLDropdownMenuDelegate <NSObject>
@optional
- (void)dropdownMenu:(SLDropdownMenu *)menu didSelectedRow:(NSInteger)row;
@end
@interface SLDropdownMenu : UIView
/**
標(biāo)題限佩,若有dataSource熊尉,則默認(rèn)為下拉列表數(shù)據(jù)第一個值膏潮。
*/
@property (nonatomic, copy) NSString *title;
@property (nonatomic) UIFont *titleFont;
@property (nonatomic) UIColor *titleColor;
/**
附加圖片锻狗,默認(rèn)為nil。
*/
@property (nonatomic, strong) UIImage *accessoryImage;
/**
附加圖片排列方式焕参,默認(rèn)SLImageAlignmentDefault
*/
@property (nonatomic, assign) SLImageAlignment imageAlignment;
/**
圖片大小轻纪,默認(rèn)CGSizeMake(22.f, 18.f)。
*/
@property (nonatomic, assign) CGSize imageSize;
/**
下拉列表數(shù)據(jù)源龟糕。
*/
@property (nonatomic, strong) NSArray<NSString *> *dataSource;
/**
模糊背景視圖顏色透明度桐磁,默認(rèn)黑色,透明度為0.f
*/
@property (nonatomic, assign) CGFloat dimmingViewColorAlpha;
/**
彈出框?qū)挾冉菜辏J(rèn)為menu本身寬度我擂,如果大于屏幕寬度,則按屏幕寬度布局缓艳。
*/
@property (nonatomic, assign) CGFloat popoverViewWidth;
/**
彈出框背景顏色校摩,默認(rèn)[UIColor clearColor]
*/
@property (nonatomic, strong) UIColor *popoverViewBackgroundColor;
/**
彈出框邊框線寬度,默認(rèn)為0.f
*/
@property (nonatomic, assign) CGFloat popoverViewBorderWidth;
/**
彈出框邊框線顏色阶淘,默認(rèn)[UIColor clearColor]
*/
@property (nonatomic, strong) UIColor *popoverViewBorderColor;
/**
彈出框顯示模式衙吩,默認(rèn)為SLPopoverViewModelDefault
*/
@property (nonatomic, assign) SLPopoverViewModel popoverModel;
/**
氣泡(三角形)高度,默認(rèn)10.f
*/
@property (nonatomic, assign) CGFloat bubbleHeiht;
/**
氣泡繪制線條顏色溪窒,默認(rèn)為彈出框邊框線顏色
*/
@property (nonatomic, strong) UIColor *bubbleStrokeColor;
/**
氣泡填充顏色坤塞,默認(rèn)[UIColor clearColor]
*/
@property (nonatomic, strong) UIColor *bubbleFillColor;
/**
氣泡顯示位置,默認(rèn)靠右:SLBubblePositionRight
*/
@property (nonatomic, assign) SLBubblePosition bubblePosition;
/**
下拉列表內(nèi)邊距澈蚌,默認(rèn)UIEdgeInsetsZero摹芙。
*/
@property (nonatomic, assign) UIEdgeInsets tableViewEdgeInsets;
@property (nonatomic, strong) UIColor *tableViewBackgroundColor;
@property (nonatomic, strong) UIColor *tableViewSeparatorColor;
@property (nonatomic, assign) BOOL showSeparatorLine;
/**
顯示搜索框,默認(rèn)NO(不顯示)
*/
@property (nonatomic, assign) BOOL showSearchBar;
@property (nonatomic, strong) SLSearchBar *searchBar;
@property (nonatomic, weak) id<SLDropdownMenuDelegate> delegate;
/**
已選中行宛瞄。
*/
@property (nonatomic, assign, readonly) NSInteger selectedRow;
/**
設(shè)置選擇行
@param row 選擇的行浮禾,若大于或等于dataSource的count,則無效份汗。
*/
- (void)setSelectRow:(NSInteger)row;
@end
具體實現(xiàn)請查閱代碼:Demo