2012-05-12 34 views
5

Tôi có UITableView đơn giản và các ô của nó là lớp con của UITableViewCell.Vẽ dấu phân cách dọc trên UITableViewCell

Trong lớp con cell Tôi overrode drawRect để đặt mã bản vẽ này trong (đối với thiết bị tách dọc):

CGContextRef c = UIGraphicsGetCurrentContext(); 
CGContextSetStrokeColorWithColor(c, [[UIColor grayColor] CGColor]); 
CGContextBeginPath(c); 
CGContextMoveToPoint(c, self.frame.size.height + 0.5f, 0); 
CGContextAddLineToPoint(c, self.frame.size.height + 0.5f, self.frame.size.height); 
CGContextStrokePath(c); 

Nó làm việc rất lớn. Tuy nhiên bây giờ tôi đã thay đổi kiểu xem bảng thành nhóm. Dòng đơn giản là không được rút ra. Mặc dù thiết lập một điểm dừng cho thấy phương thức drawRect được gọi.

Tôi muốn tránh các lớp con UIView chỉ để vẽ một đường nhỏ, đặc biệt là khi tôi đã phân lớp ô xem bảng và tôi chỉ muốn vẽ trên ô. Vì vậy, tại sao mã đột nhiên ngừng làm việc trên một tableview nhóm?

+0

thử đặt lại chế độ mô phỏng n nới lỏng ur prjct – Saad

Trả lời

10

Bạn không nên ghi đè drawRect trong các lớp con UITableViewCell. Nếu bạn không muốn đặt ô tùy chỉnh backgroundView, thì bạn chỉ có thể thêm đơn giản UIView chiều rộng 1px.

UIView* vertLineView = [[UIView alloc] initWithFrame:CGRectMake(80, 0, 1, 44)]; 
vertLineView.backgroundColor = [UIColor redColor]; 
[self.contentView addSubview:vertLineView]; 
+1

Đồng ý. Hoặc bạn có thể thêm UIImageView với hình ảnh dòng tùy chỉnh vào ô. – Joel

+1

Tại sao nó không phải là một ý tưởng tốt? –

+0

Tôi nghĩ rằng tôi đã sai về điều đó. Trong một số trường hợp, có thể hợp lý để ghi đè 'drawRect'. – onegray

Các vấn đề liên quan