iOS一個下拉框控件

GitHub

https://github.com/fengli12321/FLNiceSpinner

Example

2017-12-13 23.09.32.gif

這是一個iOS下拉框控件,提供了豐富的屬性自定義UI。同時實現了彈出框的自動防遮擋,以及異步數據的加載功能(比如網絡數據的請求)

1.同步數據
FLNiceSpinner *spinner = [[FLNiceSpinner alloc] initWithFrame:CGRectMake(50, 100, 100, 30)];
    spinner.delegate = self;
    [self.view addSubview:spinner];
實現協議方法
- (NSString *)fl_spinner:(FLNiceSpinner *)spinner showItemStringAtIndex:(NSInteger)index {
    if ([spinner isEqual:_spinner1]) {
        return _arr1[index];
    }
    else if ([spinner isEqual:_spinner2]) {
        return _arr2[index];
    }
    else if ([spinner isEqual:_spinner3]) {
        return _arr3[index];
    }
    else if ([spinner isEqual:_spinner4]) {
        return _arr4[index];
    }
    else if ([spinner isEqual:_spinner5]) {
        return _arr5[index];
    }
    else if ([spinner isEqual:_spinner6]) {
        return _arr6[index];
    }
    else if ([spinner isEqual:_spinner7]) {
        return _arr7[index];
    }
    else if ([spinner isEqual:_spinner8]) {
        return _arr8[index];
    }
    else if ([spinner isEqual:_spinner9]) {
        return _arr9[index];
    }
    return nil;
}
- (NSInteger)fl_itemsCountOfSpinner:(FLNiceSpinner *)spinner {
    if ([spinner isEqual:_spinner1]) {
        
        return _arr1.count;
    }
    else if ([spinner isEqual:_spinner2]) {
        return _arr2.count;
    }
    else if ([spinner isEqual:_spinner3]) {
        return _arr3.count;
    }
    else if ([spinner isEqual:_spinner4]) {
        return _arr4.count;
    }
    else if ([spinner isEqual:_spinner5]) {
        return _arr5.count;
    }
    else if ([spinner isEqual:_spinner6]) {
        return _arr6.count;
    }
    else if ([spinner isEqual:_spinner7]) {
        return _arr7.count;
    }
    else if ([spinner isEqual:_spinner8]) {
        return _arr8.count;
    }
    else if ([spinner isEqual:_spinner9]) {
        return _arr9.count;
    }
    return 0;
}
2.異步方法
用于異步數據加載,例如數據需要通過網絡加載
FLNiceSpinner *spinner = [[FLNiceSpinner alloc] initWithFrame:CGRectMake(50, 100, 100, 30)];
spinner.delegate = self;
spinner.isAsyncGetData = YES
[self.view addSubview:spinner];
實現代理方法
- (void)fl_spinner:(FLNiceSpinner *)spinner requestDataSuccess:(void (^)(NSArray<NSString *> *))success fail:(void (^)(void))fail {
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        success(@[@"中文", @"英文", @"法語", @"德語", @"西班牙語", @"四川話"]);
    });
}
屬性 名稱
占位提示文字 spaceString NSString
文本框文字顏色 textColor UIColor
文本框背景顏色 backColor UIColor
文本框選中后背景顏色 selectedBackColor UIColor
文本框字體大小 font UIFont
清空項提示字符 clearNoteString NSString
列表項文字大小 listItemFont UIFont
列表項高度 listItemHeight CGFlot
列表文字顏色 listItemTextColor UIColor
彈出時最大顯示行數 maxShowLines NSUInteger
彈出框的背景顏色 spinnerBackColor UIColor
按鈕圓角 cornerRadius CGFloat
展開收起提示用圖標 noteImage NSString
選中項的下標 selectedIndex NSInteager
是否是異步的方式獲取數據 isAsyncGetData BOOL

Requirements

iOS8.0+

Installation

FLNiceSpinner is available through CocoaPods. To install
it, simply add the following line to your Podfile:

可以通過Cocoapods進行項目的安裝,添加如下到你的Podfile文件中:

pod 'FLNiceSpinner'

執行

pod install

Author

FoxPower, 954751186@qq.com 歡迎提出問題,歡迎點贊交流

License

FLNiceSpinner is available under the MIT license. See the LICENSE file for more info.

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容