本文实例为大家分享了ios实现简单分栏效果的具体代码,供大家参考,具体内容如下
直接贴代码喽
gmsubfieldviiew.h
#import <uikit/uikit.h> @interface gmsubfieldviiew : uiview /** * select index */ @property(nonatomic,copy) void(^clickindex)(nsinteger index); - (instancetype)initwithframe:(cgrect)frame titles:(nsarray *)thititles; /** * 默认勾选 */ @property(nonatomic,assign) nsinteger selectedindex; @end
gmsubfieldviiew.m
#import "gmsubfieldviiew.h" #define lineh 2 @interface gmsubfieldviiew () /** * titles */ @property(nonatomic,strong) nsarray * titles; /** * lineview */ @property(nonatomic,weak) uiview *lineview; /** * itemwidth */ @property(nonatomic,assign) cgfloat itemwidth; @end @implementation gmsubfieldviiew #pragma mark - initui - (instancetype)initwithframe:(cgrect)frame titles:(nsarray *)thititles { if (self = [super initwithframe:frame]) { self.titles = thititles; //initsubviews [self initsubviews]; } return self; } #pragma mark - action - (void) initsubviews { self.itemwidth = kscreen_width/self.titles.count; //add child for (int i=0; i<self.titles.count; i++) { uibutton *btn = [uibutton buttonwithtype:uibuttontypecustom]; [btn settitle:self.titles[i] forstate:uicontrolstatenormal]; btn.titlelabel.font = fontsize(15); btn.tag = 100+i; btn.layer.borderwidth = 0.5; [btn settitlecolor:[uicolor blackcolor] forstate:uicontrolstatenormal]; btn.layer.bordercolor = [uicolor lightgraycolor].cgcolor; [btn addtarget:self action:@selector(btnclick:) forcontrolevents:uicontroleventtouchupinside]; [self addsubview:btn]; } //添加下划线 uiview *lineview = [[uiview alloc]init]; lineview.backgroundcolor = [uicolor blackcolor]; [self addsubview:lineview]; self.lineview = lineview; } - (void)layoutsubviews { [super layoutsubviews]; for (int i=0; i<self.titles.count; i++) { uibutton *btn = [self viewwithtag:100+i]; btn.frame = cgrectmake(i*self.itemwidth, 0, self.itemwidth, self.bounds.size.height-lineh+1); } self.lineview.frame = cgrectmake(self.selectedindex*self.itemwidth, self.bounds.size.height-lineh, self.itemwidth, lineh); } - (void) btnclick:(uibutton *)btn { nsinteger index = btn.tag -100; esweakself [uiview animatewithduration:0.2 animations:^{ esstrongself self.lineview.frame = cgrectmake(index*self.itemwidth, self.bounds.size.height-lineh, self.itemwidth, lineh); }]; if (self.clickindex) { self.clickindex(index); } } /* // only override drawrect: if you perform custom drawing. // an empty implementation adversely affects performance during animation. - (void)drawrect:(cgrect)rect { // drawing code } */ @end
调用:
gmsubfieldviiew *segview = [[gmsubfieldviiew alloc]initwithframe:cgrectmake(0, 10, kscreen_width, segh) titles:@[@"未还",@"已还"]]; segview.selectedindex = 1; esweakself segview.clickindex = ^(nsinteger index){ self.ishk = no; esstrongself if(index==0){ //未还 self.rightbutton.hidden = no; } else if(index==1){ //已还 self.rightbutton.hidden = yes; self.containview.hidden = yes; } self.tableview.frame = cgrectmake(0, 60, kscreen_width, kscreen_height-navheight-60); [self.tableview reloaddata]; }; [self.view addsubview:segview];
效果图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。