亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS中創建表格類視圖WBDataGridView的實例代碼

2020-07-26 02:56:55
字體:
來源:轉載
供稿:網友

項目中創建表格, 引用頭文件

#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:@[@"郵箱",@"dylan_lwb@163.com"]];  [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:@[@"郵箱",@"郵箱",@"郵箱",@"dylan_lwb@163.com"]];  [self.viewaddSubview:MoreDataGrid];}// WBDataGridView.h #import <UIKit/UIKit.h>extern NSString *const SwitchButtonString;@interface WBDataGridView : 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 * const SwitchButtonString =@"SwitchButtonString";@interface WBDataGridView ()@property (assign,nonatomic) NSUInteger numRows;@property (assign,nonatomic) NSUInteger dy;@property (retain,nonatomic) NSMutableArray *switchButtons;@end@implementation WBDataGridView- (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];  }  return self;}- (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<record.count; i++)  {    float colWidth = [[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<labels.count; 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;    }  }];  return index;}- (BOOL)isRoundCorner:(NSInteger)row{  return NO;}@end

以上所述是小編給大家介紹的iOS中創建表格類視圖WBDataGridView的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产99视频在线观看| 欧美孕妇毛茸茸xxxx| 亚洲美女av在线播放| 色播久久人人爽人人爽人人片视av| 91产国在线观看动作片喷水| 欧美剧在线观看| 一区二区av在线| 日韩精品在线看| 国产精品99蜜臀久久不卡二区| 国产精品永久免费在线| 色综合久久精品亚洲国产| 久久精品中文字幕一区| 国产精品7m视频| 狠狠躁夜夜躁人人躁婷婷91| 久久久久久久久久久网站| 热99久久精品| 日本在线精品视频| 国产精品高潮呻吟久久av无限| 九九精品在线观看| 久久不射电影网| 久久久久久欧美| 亚洲欧美日本另类| 日韩欧美精品网址| 亚洲国产精品悠悠久久琪琪| 成人黄色av播放免费| 尤物99国产成人精品视频| 国产精品久久久久久久天堂| 中文字幕成人精品久久不卡| 国产欧美一区二区三区四区| 久久久久国产精品www| 国产成人一区二区三区电影| 国语自产精品视频在线看抢先版图片| 亚洲伊人第一页| 欧美精品一区在线播放| 国产丝袜高跟一区| 日韩av手机在线| 久久免费精品视频| 日韩欧美精品中文字幕| 91极品视频在线| 欧美国产精品人人做人人爱| 97福利一区二区| 欧美精品在线观看91| 欧美日韩在线观看视频| 国产精品香蕉在线观看| 亚洲天堂第一页| 日韩极品精品视频免费观看| 97视频在线观看成人| 91免费精品国偷自产在线| 日韩精品电影网| 伊人久久久久久久久久久| 国产一区二区在线免费视频| 国产91色在线免费| 国产啪精品视频网站| 97视频在线看| 国产狼人综合免费视频| 欧美黑人xxx| 欧美有码在线观看视频| 欧美日韩国产91| 91精品国产99久久久久久| 亚洲丁香婷深爱综合| 欧美一级视频免费在线观看| 红桃av永久久久| 欧美精品一区三区| 91性高湖久久久久久久久_久久99| 成人国产在线激情| 亚洲第一精品久久忘忧草社区| 日韩麻豆第一页| 中文字幕亚洲欧美在线| 久久久久久久久久久久久久久久久久av| 欧美人成在线视频| 精品久久久久久久中文字幕| 成人羞羞国产免费| 亚洲国产欧美一区二区三区久久| 色爱av美腿丝袜综合粉嫩av| 中文字幕av一区| 午夜美女久久久久爽久久| 日韩欧美在线视频| 国产精品久久久久久久久久久不卡| 欧美疯狂做受xxxx高潮| 国产精品视频地址| 97av在线播放| 国产精品高潮呻吟视频| 色阁综合伊人av| 亚洲国产成人爱av在线播放| 国产成人啪精品视频免费网| 亚洲丝袜一区在线| 日韩欧美国产视频| 国内精久久久久久久久久人| 精品少妇一区二区30p| 国产精品专区h在线观看| 久久91精品国产91久久久| 精品综合久久久久久97| 久久夜精品va视频免费观看| 国产成人精品a视频一区www| 日本国产欧美一区二区三区| 日韩欧美在线字幕| 欧美日韩另类在线| 不卡av在线网站| 国产精品欧美日韩一区二区| 欧美日韩国产综合视频在线观看中文| 欧美精品在线观看91| 亚洲第一精品福利| 欧美日韩综合视频网址| 精品国产一区二区三区久久| www.亚洲一区| 影音先锋欧美精品| 91在线观看免费网站| 国产91在线播放九色快色| 欧美日本亚洲视频| 欧美亚洲另类激情另类| 亚洲日韩欧美视频一区| 欧美激情二区三区| 欧美成人激情在线| 亚洲91av视频| 国产激情视频一区| 色天天综合狠狠色| 欧美黄色片在线观看| 中文字幕不卡在线视频极品| 日韩电影免费在线观看| 久久97精品久久久久久久不卡| 欧美怡红院视频一区二区三区| 久久久久久亚洲| 亚洲精品一区久久久久久| 国内精品国产三级国产在线专| 在线观看成人黄色| 国产欧美日韩精品专区| 96精品视频在线| 欧美日韩中国免费专区在线看| 欧美成人精品一区| 欧美黄色小视频| 中日韩美女免费视频网站在线观看| 精品久久久久久中文字幕| 亚洲第一区在线观看| 欧美激情免费观看| 亚洲精品v天堂中文字幕| 久久精品视频在线观看| 久久久免费观看视频| 国产精品av免费在线观看| 亚洲色图五月天| 日韩精品视频三区| 国产精品扒开腿爽爽爽视频| 久久久久久久久久久亚洲| 国产午夜精品视频免费不卡69堂| 精品女同一区二区三区在线播放| 日韩av色在线| 国产精品18久久久久久麻辣| 中文字幕亚洲无线码在线一区| 欧美日韩国产色视频| 欧美激情精品久久久久久变态| 久久91精品国产| 日韩小视频在线| 97人洗澡人人免费公开视频碰碰碰| 亚洲剧情一区二区| 欧美色另类天堂2015| 亚洲成人免费网站| 国产精品99久久久久久人| 日韩美女av在线免费观看| 欧美人在线视频| 国产a∨精品一区二区三区不卡| 欧美乱妇40p| 亚州欧美日韩中文视频| 国产精品ⅴa在线观看h| 日韩欧美aaa| 在线观看91久久久久久|