XFDesignEvaluate
自定義評價(jià)界面 星級 標(biāo)簽自適應(yīng)
希望喜歡的話炼绘,GitHub上下載demo珊燎,麻煩star一下檬贰,不勝感激9昧!翁涤!
個(gè)人GitHub的demo鏈接:https://github.com/FreeSnow520/XFDesignEvaluate
1.自定義評價(jià)界面 星級 標(biāo)簽自適應(yīng)評價(jià) 星星 點(diǎn)擊之后聯(lián)動標(biāo)簽;
2.標(biāo)簽自適應(yīng) 標(biāo)簽換行 創(chuàng)建標(biāo)簽之后可生成自適應(yīng)的View:
1).修改顏色大小等更多屬性等你自定義;
2).可默認(rèn)選擇 默認(rèn)標(biāo)簽的選擇 是數(shù)組 只要傳入對應(yīng)標(biāo)簽的下標(biāo)即可默認(rèn)選中;
3).可單選可多選或不可選;
4).標(biāo)題重置桥言。
項(xiàng)目中要寫評價(jià) 然后覺得這玩意碰到之前也寫過萌踱,每次都重新搞 感覺很費(fèi)勁 所以為了為自己鋪好路,干脆寫了個(gè)小東西封裝一下号阿。
對于這個(gè)小封裝并鸵,里面代碼并沒有什么深奧的東西, 自認(rèn)為能力有限 扔涧,以后的道路漫長园担,望各位大佬看過之后輕噴。
那好枯夜, 現(xiàn)在我們來看看我寫的這個(gè)小控件 到底怎么用弯汰,有哪些功能
1.自定義的星級評價(jià)
這個(gè)功能相對簡單: 單選模式、多選模式湖雹、 可自由設(shè)置的有整個(gè)view的左右間距咏闪、中間按鈕的間距 、圖片顏色等摔吏。
2.自定義的可高度的自適應(yīng)的標(biāo)簽:主要功能根據(jù)標(biāo)簽的寬度自動換行鸽嫂、單選模式、多選模式征讲、可取消可酸中据某、設(shè)置多個(gè)默認(rèn)選擇標(biāo)簽、可自由設(shè)置的選中和未選中的 button文字距button自己邊界左右間距诗箍、上下間距癣籽;button間間距;button圖片顏色扳还,border寬度和顏色等諸多屬性才避。
自定義評價(jià)界面:
/**
所選信息 單選
*/
@property (nonatomic, copy) void (^infoButton)(XFEvaluateRank * button); /**< 完成回調(diào)信息 */
@property (nonatomic, copy) NSArray <NSArray > imgArr; /**< 圖片 */
@property (nonatomic, assign) BOOL isSingleSelected; /**< 默認(rèn)為開啟單選(YES) NO為選擇本身及之前所有 */
-(void)addSubButtons;/**< 添加buttons 5 需要放在屬性設(shè)置之后 */
#pragma mark - 單獨(dú)評價(jià)星級
//初始化, 高度可自定義 距離左右邊界默認(rèn)值自定義PrefixHeader文件中
XFEvaluateView * evaView = [[XFEvaluateView alloc] initWithFrame:CGRectMake(0, 53.5 - 7.5, [UIScreen mainScreen].bounds.size.width, 50)];
evaView.isSingleSelected = YES;
__weak typeof(self) weakSelf = self;
evaView.infoButton = ^(XFEvaluateRank *button) {
[weakSelf updateUIButton:button];
};
//放在設(shè)置屬性和block 之后
[evaView addSubButtons];
[self addSubview:evaView];
自定義標(biāo)簽:
/**
關(guān)于button的參數(shù)設(shè)置 這個(gè)需要寫在 XFTagsView
btnDistance 按鈕間隙
btnTopDistance 按鈕上下
btnWidth 按鈕初始寬度
btnHeight 按鈕初始高度
.....
*/
@property (nonatomic, assign) CGFloat btnDistance; /**< 按鈕間 間隙 */
@property (nonatomic, assign) CGFloat btnTopDistance; /**< 按鈕上下 間隙 */
@property (nonatomic, assign) CGFloat btnWidth; /**< 按鈕初始寬度 */
@property (nonatomic, assign) CGFloat btnHeight; /**< 按鈕初始高度 */
@property (nonatomic, strong) UIColor unselectTitleColor; /*< 未選中時(shí)按鈕顏色 */
@property (nonatomic, strong) UIColor selectTitleColor; /*< 選中時(shí)按鈕顏色 */
@property (nonatomic, strong) UIColor selectborderColor; /*< 選中時(shí)邊框顏色 */
@property (nonatomic, strong) UIColor unselectborderColor; /*< 未選中時(shí)邊框顏色 */
@property (nonatomic, strong) UIColor selectBgColor; /*< 選中背景顏色 */
@property (nonatomic, strong) UIColor unselectBgColor; /*< 未選中背景顏色 */
@property (nonatomic, assign) CGFloat borderWidth; /**< 邊框?qū)挾?*/
@property (nonatomic, strong) UIFont titleLabelFont;/*< 字體大小 */
@property (nonatomic, assign) BOOL isSingleSelected; /**< 默認(rèn)為多選(default is NO) NO為選擇本身及之前 */
@property (nonatomic, strong) void (^infoButtonBlock)(UIButton * button); /**< 回傳帶有信息的button */
/**
初始化標(biāo)簽
這個(gè)方法需要你放在
所有屬性都設(shè)置完成之后
去使用
@param tagTitles 標(biāo)簽數(shù)組
@param isEnable 按鈕是否可點(diǎn)擊 (default is YES 可點(diǎn)擊)
*/
- (void)initButtonWith:(NSArray *)tagTitles isEnable:(BOOL)isEnable;
/**
初始化后 設(shè)置button選中狀態(tài) (無觸發(fā)無回調(diào))
isSingleSelected 屬性開啟 則為單選 默認(rèn)設(shè)置下標(biāo)最后一個(gè)為選中狀態(tài)
@param tagIndex 每個(gè)標(biāo)簽對應(yīng)的下標(biāo)數(shù)組[@"0",@"1",...]
*/
- (void)reSetButtonSelectStatus:(NSArray *)tagIndex;
#pragma mark - 單獨(dú)標(biāo)簽自適應(yīng)
//初始化
self.xfTagsView = [[XFTagsView alloc] initWithFrame:CGRectMake(0, 132 - 10, [UIScreen mainScreen].bounds.size.width, 100)];
__weak XFCustomEView * weakSelf = self;
self.xfTagsView.infoButtonBlock = ^(UIButton *button) {
//存入tag 方便獲取外部對應(yīng)數(shù)據(jù)
//doSomething coding
}
/*中間增加屬性 如 @property (nonatomic, strong) UIColor *unselectTitleColor; /**< 未選中時(shí)按鈕顏色 */
@property (nonatomic, strong) UIColor *selectTitleColor; /**< 選中時(shí)按鈕顏色 */
@property (nonatomic, strong) UIColor *selectborderColor; /**< 選中時(shí)邊框顏色 */
@property (nonatomic, strong) UIColor *unselectborderColor; /**< 未選中時(shí)邊框顏色 */
修改顏色大小等更多屬性等你自定義
*/
[self.xfTagsView initButtonWith:_titlesArr isEnable:YES];//一切屬性的定義都需要放在這個(gè)方法之前
[self addSubview:self.xfTagsView];
自定義星級評價(jià)帶標(biāo)簽:
@property (nonatomic, copy) void (^refreshView)(XFEvaluateRank button); /*< 更新 */
@property (nonatomic, strong) NSMutableArray * resultArray;
/**< 只存 評價(jià)級別 評價(jià)狀態(tài) 評價(jià)標(biāo)簽 最終要的結(jié)果例:@[ @"1" @"很
好" @[標(biāo)簽數(shù)組標(biāo)簽的下標(biāo)0氨距,1...] ]*/
@property (nonatomic, copy) NSArray * titlesArr; /**< 標(biāo)簽數(shù)組 */
/**
如果選擇并且數(shù)目大于0則顯示標(biāo)簽 當(dāng)選擇星級之后執(zhí)行方法 動態(tài)改變視圖
*/
- (void)addDymView;
#pragma mark - 星級和自適應(yīng)標(biāo)簽
@property (nonatomic, strong) NSMutableArray <NSMutableArray *>* tagNameArray; /**< 標(biāo)簽名字?jǐn)?shù)組 */
_tagNameArray = [[NSMutableArray alloc] init];
[_tagArray addObjectsFromArray:@[[[NSMutableArray alloc] initWithArray:@[@"愛情", @"不是", @"一個(gè)糖"]],
[[NSMutableArray alloc] initWithArray:@[@"愛情", @"不是", @"一杯水"]],
[[NSMutableArray alloc] initWithArray:@[@"愛情", @"更不是", @"不是簡簡單單的甜言蜜語"]],
[[NSMutableArray alloc] initWithArray:@[@"愛情", @"而是", @"萬里挑一的靈魂碰撞", @"有趣的靈魂總是俺么萬里挑一"]],
[[NSMutableArray alloc] initWithArray:@[@"我們", @"遇見", @"即珍惜"]]]];
//初始化
self.evalueTopBgView = [[XFCustomEView alloc] init];
self.evalueTopBgView.titlesArr = self.tagNameArray[0];
__weak typeof(self) weakSelf = self;
self.evalueTopBgView.refreshView = ^(XFEvaluateRank *button) {
weakSelf.evalueTopBgView.titlesArr = weakSelf.tagNameArray[(int)button.tag - 100];
//動態(tài)修改
[weakSelf.evalueTopBgView addDymView];
};
[self.view addSubview:self.evalueTopBgView];
喜歡的話麻煩收藏一下文章桑逝,或者關(guān)注一波,不勝感激G稳谩@愣簟!
希望喜歡的話首昔,GitHub上下載demo寡喝,麻煩star一下,不勝感激@掌妗T蕖!
個(gè)人GitHub的demo鏈接:https://github.com/FreeSnow520/XFDesignEvaluate
如有疑問和建議可簡書或者GitHub留言 我會有時(shí)間來看赊颠。