[英]iOS: Make a circle with background color like the iPhone calendar list
I'm trying to add a circle to the left on my table cells however can't figure out the best way to do it. 我正试图在我的桌面单元格左侧添加一个圆圈,但无法弄清楚最好的方法。 I tried adding
我尝试添加
CGContextRef context= UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGContextSetAlpha(context, 0.5);
CGContextFillEllipseInRect(context, CGRectMake(10.0, 10.0, 10.0, 10.0));
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
CGContextStrokeEllipseInRect(context, CGRectMake(10.0, 10.0, 10.0, 10.0));
to my cellForRowAtIndexPath but kept getting invalid context errors. 到我的cellForRowAtIndexPath但保持无效的上下文错误。 Here is my cellForRowAtIndexPath.
这是我的cellForRowAtIndexPath。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"AppointmentCell";
NSDictionary *appointment = [[self.appointments objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
int minutes = (int)[[NSString stringWithFormat:@"%@", [appointment objectForKey:@"start_time"]] integerValue];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
}
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"h:mma"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
NSDate *midnight = [NSDate dateWithTimeIntervalSince1970:0];
NSDate *newDate = [midnight dateByAddingTimeInterval:minutes*60];
NSString *newTime = [dateFormatter stringFromDate:newDate];
dateFormatter = nil;
cell.textLabel.text = newTime;
cell.detailTextLabel.textAlignment = UITextAlignmentCenter;
cell.detailTextLabel.text = [appointment objectForKey:@"reason"];
return cell;
}
How would I add the circle with a color just like the iPhone's Calendar list view? 如何像iPhone的日历列表视图一样添加颜色的圆圈?
UPDATED 更新
Your code for rendering the circle is fine you will just have to place that inside of a UIView sub class for it to work properly. 您渲染圆圈的代码很好,您只需将其置于UIView子类中以使其正常工作。
@interface CircleView : UIView{
}
@implementation CircleView{
- (void)drawRect:(CGRect)rect{
CGContextRef context= UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGContextSetAlpha(context, 0.5);
CGContextFillEllipseInRect(context, CGRectMake(0,0,self.frame.size.width,self.frame.size.height));
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
CGContextStrokeEllipseInRect(context, CGRectMake(0,0,self.frame.size.width,self.frame.size.height));
}
}
You can then add the circle view to your table cell, 然后,您可以将圆形视图添加到表格单元格中,
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//...
//Your existing code
CGRect positionFrame = CGRectMake(10,10,10,10);
CircleView * circleView = [[CircleView alloc] initWithFrame:positionFrame];
[cell.contentView addSubview:circleView];
[circleView release];
return cell;
}
Play around with the position frame until it matches what you need. 使用位置框架,直到它符合您的需要。
tableView:cellForRowAtIndexPath:
is where cells are created, but that isn't where drawing happens. tableView:cellForRowAtIndexPath:
是创建单元格的位置,但这不是绘图发生的位置。 If you want to do custom drawing in a tableViewCell, you'll need to subclass UITableViewCell
, override drawRect:
, and put your drawing code in there. 如果你想在tableViewCell中进行自定义绘图,你需要
UITableViewCell
,覆盖drawRect:
,并将你的绘图代码放在那里。
Alternatively, you could set your tableViewCell's imageView's UIImage to a picture of a circle. 或者,您可以将tableViewCell的imageView的UIImage设置为圆形图片。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.