我勾画了这个原型:http://dl.dropbox.com/u/3630641/3-%20Todolist%20Main.jpg
左边的数字是项目优先级,列表是可重新订购的,因此值会发生变化。如何创建这些左侧徽章?如果可能,我更喜欢代码方法,而不是PNG图像。
请你看一下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
CGRect priorityLabelRect = CGRectMake(10, 5, 20, 30);
UILabel *priorityLabel = [[UILabel alloc] initWithFrame:priorityLabelRect];
priorityLabel.layer.cornerRadius = 5.0f;
priorityLabel.layer.backgroundColor = [[UIColor grayColor] CGColor];
priorityLabel.tag = kPriorityValueTag;
[cell.contentView addSubview:priorityLabel];
[priorityLabel release];
CGRect meatLabelRect = CGRectMake(80, 5, 300, 30);
UILabel *meatLabel = [[UILabel alloc] initWithFrame:meatLabelRect];
meatLabel.tag = kMeatValueTag;
[cell.contentView addSubview:meatLabel];
[meatLabel release];
cell.showsReorderControl = YES;
}
// Configure the cell.
[self configureCell:cell atIndexPath:indexPath];
return cell;
}
但优先级周围没有显示灰色区域 如果我添加一个新的灰色区域,优先级周围会出现不到一秒的灰色区域,但它会立即消失。更不用说优先级值不位于灰色区域的中心。
知道我做错了吗?
答案 0 :(得分:3)
向单元格添加UILabel
并根据自己的喜好对其进行格式化。对于圆角,请设置label.layer.cornerRadius
。
答案 1 :(得分:2)
看这里它将解释如何画出你想要徽章的样子。并绘制数字: http://www.techotopia.com/index.php/An_iPhone_Graphics_Drawing_Tutorial_using_Quartz_2D
创建一个将接收单元格编号并在单元格中绘制的变量。
应该看起来像那样 -
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
CGRect rectangle = CGRectMake(10,10,40,40);
CGContextAddRect(context, rectangle);
CGContextStrokePath(context);
CGContextSetFillColorWithColor(context, [UIColor grayColor].CGColor);
CGContextFillRect(context, rectangle);
CGPoint point =CGPointMake(20,20);
[self.cellNumber drawAtPoint:point withFont:font];
}
4将BadgeView添加到您的单元格,并在CellForRawAtIndexPath中将该数字传递给徽章视图。
祝你好运答案 2 :(得分:0)
您可以进行组合控制。它是一个UIImageView,带有UIImage和UILabel作为子视图。
一个常规对象,其UIImageView.image带有灰色矩形,然后是UILabel,用于白色数字。然后只需更改标签文本的值。
如果你从UIImageView和子类开始,你可以直接将它直接粘贴到常规UITableViewCells,因为它们已经有了一个UIImageView的空间。