最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
iOS中创建表格类视图WBDataGridView的实例代码
时间:2022-06-26 06:08:00 编辑:袖梨 来源:一聚教程网
项目中创建表格, 引用头文件
代码如下 | 复制代码 |
#import"WBDataGridView.h" - (void)viewDidLoad{ [superviewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColorwhiteColor]; CGFloat margin =10.f; CGFloat width = self.view.frame.size.width -2*margin; // - 添加表格 - 两列 WBDataGridView *DataGrid = [[WBDataGridViewalloc] initWithFrame:CGRectMake(margin,4*margin , width,0) andColumnsWidths:@[@(width*0.4),@(width*0.6)]]; DataGrid.roundCorner = YES; [DataGrid addRecord:@[@"姓名",@"dylan_lwb_"]]; [DataGrid addRecord:@[@"性别",@"男"]]; [DataGrid addRecord:@[@"电话",@"110119120"]]; [DataGrid addRecord:@[@"邮箱",@"[email protected]"]]; [self.viewaddSubview:DataGrid]; // - 添加表格 - 多列 WBDataGridView *MoreDataGrid = [[WBDataGridViewalloc]initWithFrame:CGRectMake(margin,CGRectGetMaxY(DataGrid.frame) +2*margin , width,0) andColumnsWidths:@[@(width*0.2),@(width*0.2),@(width*0.2),@(width*0.4)]]; MoreDataGrid.roundCorner = YES; [MoreDataGrid addRecord:@[@"姓名",@"姓名",@"姓名",@"dylan_lwb_"]]; [MoreDataGrid addRecord:@[@"性别",@"性别",@"性别",@"男"]]; [MoreDataGrid addRecord:@[@"电话",@"电话",@"电话",@"110119120"]]; [MoreDataGrid addRecord:@[@"邮箱",@"邮箱",@"邮箱",@"[email protected]"]]; [self.viewaddSubview:MoreDataGrid]; } // WBDataGridView.h #import extern NSString *constSwitchButtonString; @interfaceWBDataGridView : UIView @property(retain,nonatomic) NSArray *columnsWidths; @property(assign,nonatomic) NSUInteger lastRowHeight; @property(retain,nonatomic) UIImage *selectedImage; @property(retain,nonatomic) UIImage *unselectedImage; @property(assign,nonatomic) BOOL roundCorner; - (id)initWithFrame:(CGRect)frame andColumnsWidths:(NSArray*)columns; - (void)addRecord:(NSArray*)record; - (NSUInteger)selectedIndex; @end // WBDataGridView.m #import"WBDataGridView.h" NSString *constSwitchButtonString =@"SwitchButtonString"; @interfaceWBDataGridView () @property(assign,nonatomic) NSUInteger numRows; @property(assign,nonatomic) NSUInteger dy; @property(retain,nonatomic) NSMutableArray *switchButtons; @end @implementationWBDataGridView - (id)initWithFrame:(CGRect)frame andColumnsWidths:(NSArray*)columns{ self = [superinitWithFrame:frame]; if(self) { self.numRows =0; self.columnsWidths = columns; self.dy =0; self.numRows =0; self.switchButtons = [NSMutableArrayarray]; } returnself; } - (void)addRecord: (NSArray*)record { if(record.count !=self.columnsWidths.count) { NSLog(@"!!! Number of items does not match number of columns. !!!"); return; } self.lastRowHeight =42; uint dx =0; NSMutableArray* labels = [NSMutableArrayarray]; // - create the items/columns of the row for(uint i=0; i { floatcolWidth = [[self.columnsWidthsobjectAtIndex:i] floatValue];//colwidth as given at setup CGRect rect = CGRectMake(dx, self.dy, colWidth,self.lastRowHeight); // - adjust X for border overlapping between columns if(i>0) { rect.origin.x -= i; } NSString *oneRecord = [record objectAtIndex:i]; if([oneRecord isEqualToString:SwitchButtonString]) { // - set the switch button string as empty, create a label to adjust a cell first, then add the switch upon the label oneRecord = @""; } UILabel* col1 = [[UILabelalloc] init]; [col1.layersetBorderColor:[[UIColorcolorWithWhite:0.821alpha:1.000]CGColor]]; [col1.layer setBorderWidth:1.0]; col1.font = [UIFontfontWithName:@"Helvetica"size:self.numRows ==0?14.0f :12.0f]; col1.textColor = [UIColordarkGrayColor]; col1.frame = rect; // - round corner if([selfisRoundCorner:i]) { col1.layer.cornerRadius =5; col1.layer.masksToBounds =YES; } // - set left reght margins&alignment for the label NSMutableParagraphStyle *style = [[NSParagraphStyledefaultParagraphStyle]mutableCopy]; style.alignment =NSTextAlignmentCenter; NSAttributedString *attrText = [[NSAttributedStringalloc]initWithString:oneRecordattributes:@{NSParagraphStyleAttributeName : style}]; col1.lineBreakMode =NSLineBreakByCharWrapping; col1.numberOfLines =0; col1.attributedText = attrText; [col1 sizeToFit]; // - used to find height of longest label CGFloat h = col1.frame.size.height +10; if(h > self.lastRowHeight){ self.lastRowHeight = h; } // - make the label width same as columns's width rect.size.width = colWidth; col1.frame = rect; [labels addObject:col1]; // - used for setting the next column X position dx += colWidth; } // - make all the labels of same height and then add to view for(uint i=0; i { UILabel* tempLabel = (UILabel*)[labelsobjectAtIndex:i]; CGRect tempRect = tempLabel.frame; tempRect.size.height =self.lastRowHeight; tempLabel.frame = tempRect; [self addSubview:tempLabel]; } // - add the switch button at the first column in current row if([record.firstObjectisEqualToString:SwitchButtonString]) { UILabel *firstlabel = labels.firstObject; UIButton *oneSwitchButton = [[UIButtonalloc] initWithFrame:CGRectMake(0,0, [self.columnsWidths.firstObjectintegerValue],40)]; oneSwitchButton.center = firstlabel.center; [oneSwitchButton addTarget:selfaction:@selector(tapedSwitchButton:)forControlEvents:UIControlEventTouchUpInside]; [oneSwitchButton setBackgroundImage:self.selectedImageforState:UIControlStateSelected]; [oneSwitchButton setBackgroundImage:self.unselectedImageforState:UIControlStateNormal]; [self.switchButtonsaddObject:oneSwitchButton]; // - default selected first row button if(self.switchButtons.firstObject == oneSwitchButton) { oneSwitchButton.selected = YES; } [self addSubview:oneSwitchButton]; } self.numRows++; // - adjust Y for border overlapping beteen rows self.dy +=self.lastRowHeight-1; CGRect tempRect = self.frame; tempRect.size.height =self.dy; self.frame = tempRect; } - (void)tapedSwitchButton:(UIButton *)button { button.selected = !button.selected; [self.switchButtonsenumerateObjectsUsingBlock:^(id obj,NSUInteger idx, BOOL *stop) { UIButton *oneButton = obj; if(oneButton != button) { oneButton.selected = NO; } }]; } - (NSUInteger)selectedIndex { __block NSUInteger index =0; [self.switchButtonsenumerateObjectsUsingBlock:^(id obj,NSUInteger idx, BOOL *stop) { UIButton *oneButton = obj; if(oneButton.selected ==YES) { index = idx; *stop = YES; } }]; returnindex; } - (BOOL)isRoundCorner:(NSInteger)row { returnNO; } @end |
相关文章
- 《无限暖暖》天星之羽获得位置介绍 12-20
- 《流放之路2》重铸台解锁方法介绍 12-20
- 《无限暖暖》瞄准那个亮亮的成就怎么做 12-20
- 《无限暖暖》魔气怪终结者完成方法 12-20
- 《无限暖暖》曙光毛团获得位置介绍 12-20
- 《无限暖暖》日光果获得位置介绍 12-20