首页 > 代码库 > IOS 用drawRect 画表格
IOS 用drawRect 画表格
自定义一个View DrawLineDrawLine.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);}
IOS 用drawRect 画表格
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。