我尝试在我的iOS应用中自定义表格视图单元格,并创建了两个单独的xib文件。这些都加载在cellForRowAtIndexPath中,用于我拥有的两种不同类型的单元格。但是当显示单元格时,会出现一些图层重叠,如屏幕截图here所示。
使用以下代码在CustomTableViewCell类的initialize方法内的代码中添加垂直线,圆和绿点。
// create right border layer
CALayer *rightBorder = [CALayer layer];
rightBorder.frame = CGRectMake (55.0f, 0.0f, 1.0f, self.contentView.bounds.size.width);
rightBorder.backgroundColor = [UIColor colorWithRed:0.88 green:0.88 blue:0.88 alpha:1.0].CGColor;
[self.layer addSublayer:rightBorder];
// create outer dot
CALayer *outerDot = [CALayer layer];
outerDot.frame = CGRectMake (49.0f, 14.0f, 12.0f, 12.0f);
outerDot.backgroundColor = [UIColor whiteColor].CGColor;
[outerDot setMasksToBounds:YES];
[outerDot setCornerRadius:6.0];
[outerDot setBorderWidth:1.0];
[outerDot setBorderColor:[[UIColor colorWithRed:0.88 green:0.88 blue:0.88 alpha:1.0] CGColor]];
[self.layer addSublayer:outerDot];
// create inner dot
CALayer *innerDot = [CALayer layer];
innerDot.frame = CGRectMake (51.0f, 16.0f, 8.0f, 8.0f);
innerDot.backgroundColor = [UIColor colorWithRed:0.549 green:0.757 blue:0.322 alpha:1].CGColor;
[innerDot setMasksToBounds:YES];
[innerDot setCornerRadius:4.0];
此代码仅对第一个单元格有效,所有其他单元格都显示绿色垂直线。但是,即使这些单元格通过滚动表格视图离开屏幕也会显示正常。 另一个令人困惑的事情是断裂单元格中的垂直线。没有用于添加此垂直线的代码。 两个单元格都在cellForRowAtIndexPath方法中加载,返回的单元格取决于导航栏中的分段控件选择,它看起来像这样......
if(_count == 1)
{
// dequeue break cell type
UISessionBreakTableViewCell *breakCell = [tableView dequeueReusableCellWithIdentifier:breakCellIdentifier];
if (breakCell == nil) {
NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"MyBreakTableViewCell" owner:self options:nil];
breakCell = [nibArray objectAtIndex:0];
}
// set cell title
return breakCell;
}
else
{
// dequeue session cell type
cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"MyTableViewCell" owner:self options:nil];
cell = [nibArray objectAtIndex:0];
}
那么,我做错了什么,为什么在某些情况下这条垂直线显示在绿点上,而在另一些情况下则不是?