iOS 下拉菜單

最近在做代碼重構(gòu),發(fā)現(xiàn)之前寫(xiě)的下拉菜單不夠靈活,所以決定再寫(xiě)一個(gè)可以靈活定制的下拉菜單。

先上代碼 Demo

本Demo提供如下幾種顯示方式:
顯示方式.png

效果示例:

導(dǎo)航欄顯示.PNG
視圖顯示.PNG

相關(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ù)第一個(gè)值。
 */
@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ū)挾?,默認(rèn)為menu本身寬度,如果大于屏幕寬度,則按屏幕寬度布局。
 */
@property (nonatomic, assign) CGFloat popoverViewWidth;

/**
 彈出框背景顏色,默認(rèn)[UIColor clearColor]
 */
@property (nonatomic, strong) UIColor *popoverViewBackgroundColor;

/**
 彈出框邊框線(xiàn)寬度,默認(rèn)為0.f
 */
@property (nonatomic, assign) CGFloat popoverViewBorderWidth;

/**
 彈出框邊框線(xiàn)顏色,默認(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;

/**
 氣泡繪制線(xiàn)條顏色,默認(rèn)為彈出框邊框線(xià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,則無(wú)效。
 */
- (void)setSelectRow:(NSInteger)row;

@end

具體實(shí)現(xiàn)請(qǐng)查閱代碼:Demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過(guò)CocoaPods安裝項(xiàng)目名稱(chēng)項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明AI閱讀 16,228評(píng)論 3 119
  • 姓名:胡心妍 公司:寧波塞納電熱電器有公司 【日精進(jìn)打卡第188天】 【知~學(xué)習(xí)】 《六項(xiàng)精進(jìn)》 背誦5遍 共90...
    Cindy初色的美閱讀 98評(píng)論 0 0
  • 今年清明節(jié)放假三天,尋香茶社的小伙伴們也得以休息放松一下,攜家?guī)Э诨亓颂死霞摇;丶业哪康挠腥5谝?,回家祭拜先祖?..
    茶人老七閱讀 523評(píng)論 0 0
  • [root@hadoop001 sourcecode]# pwd /opt/sourcecode [root@ha...
    CrUelAnGElPG閱讀 218評(píng)論 0 1
  • 雪下的那么深,下的那么認(rèn)真_威海,2017.12.16。 清晨,拉開(kāi)窗簾,驚訝天氣預(yù)報(bào)的準(zhǔn)確,天色略暗,外面白白的...
    阿爾山的夢(mèng)閱讀 316評(píng)論 1 1

友情鏈接更多精彩內(nèi)容