IOS 用drawRect 画表格
自定义一个View DrawLine DrawLine.h #import <UIKit/UIKit.h> @protocol gridTouchDelete <NSObject> - (void)gridTouchColumn:(NSInteger)column touchRow:(NSInteger)row; @end @interface DrawLine : UIView @property(nonatomic, assign) id<gridTouchDelete>delegate; @end #import "DrawLine.h" #define GRID_WIDTH 44 #define GRID_HEIGHT 44 @implementation DrawLine - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code } return self; } - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); // 格子线条颜色 CGContextSetStrokeColorWithColor(context, [UIColor grayColor].CGColor); CGContextBeginPath(context); NSInteger numRows = 5; float gridHeight = numRows*(GRID_HEIGHT+2)+1; // 背景色 CGRect rectangleGrid = CGRectMake(0,0,self.frame.size.width,gridHeight); CGContextAddRect(context, rectangleGrid); CGContextSetFillColorWithColor(context, [[UIColor grayColor] colorWithAlphaComponent:0.2].CGColor); CGContextFillPath(context); for (int i = 0; i < 7; i++) { //columns 列 CGContextMoveToPoint(context, i*(GRID_WIDTH+1)+i*1, 0); CGContextAddLineToPoint(context, i*(GRID_WIDTH+1)+i*1, gridHeight); if (i > numRows) continue; //rows 行 CGContextMoveToPoint(context, 0, i*(GRID_HEIGHT+1)+i*1+1); CGContextAddLineToPoint(context, self.frame.size.width, 0+i*(GRID_HEIGHT+1)+i*1+1); } CGContextStrokePath(context); CGContextSetAllowsAntialiasing(context, YES); NSInteger gridNum = numRows * 7; for (int i = 0; i < gridNum; i ++) { int targetColumn = i%7; int targetRow = i/7; int targetX = targetColumn * (GRID_WIDTH+2)+15; int targetY = targetRow * (GRID_HEIGHT+2)+15; NSString *gridStr = [NSString stringWithFormat:@"%d",i+1]; if ([[[UIDevice currentDevice] systemVersion] floatValue] >=7.0) { UIColor *fontColor; if (targetColumn == 0 || targetColumn == 6) { fontColor = [UIColor redColor]; } else { fontColor = [UIColor blackColor]; } [gridStr drawInRect:CGRectMake(targetX, targetY, self.frame.size.width, GRID_WIDTH) withAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"HelveticaNeue-Bold" size:17],NSForegroundColorAttributeName:fontColor}]; } else { [gridStr drawInRect:CGRectMake(targetX, targetY, self.frame.size.width, GRID_WIDTH) withFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:17] lineBreakMode:NSLineBreakByClipping alignment:NSTextAlignmentCenter]; CGContextSetFillColorWithColor(context,[UIColor redColor].CGColor); } } } -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint touchPoint = [touch locationInView:self]; float xLocation = touchPoint.x; float yLocation = touchPoint.y; int column = floorf(xLocation/(GRID_HEIGHT+2)); int row = floorf(yLocation/(GRID_WIDTH+2)); if ([_delegate respondsToSelector:@selector(gridTouchColumn:touchRow:)]) { [_delegate gridTouchColumn:column touchRow:row]; } } MainViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. DrawLine *lineView = [[DrawLine alloc]initWithFrame:CGRectMake(0, 84, self.view.frame.size.width, 600)]; lineView.backgroundColor = [UIColor clearColor]; lineView.delegate = self; [self.view addSubview:lineView]; } - (void)gridTouchColumn:(NSInteger)column touchRow:(NSInteger)row { NSLog(@"行:%d,列:%d",column,row); }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。