图层在自定义表格视图单元格中重叠

时间:2015-09-01 09:06:37

标签: ios objective-c uitableview xib

我尝试在我的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];
        }

那么,我做错了什么,为什么在某些情况下这条垂直线显示在绿点上,而在另一些情况下则不是?

0 个答案:

没有答案