UITableView分隔线通过重叠的UIView短暂渗透

时间:2013-05-03 16:59:25

标签: iphone ios cocoa-touch uiview uikit

this question I asked recently之后,我能够成功地在tableview前面显示解释视图,但是我现在遇到一个问题,当tableview第一次加载时,tableview的分隔线在我的解释视图下面可以短暂显示。这是设置解释视图的背景颜色,将其设置为不透明并将其置于前面。这只是一个短暂的闪光,但它是明显的和分散注意力。

以下是我的代码(_explanationViewUIView实例变量,我在视图控制器的nil方法中设置为dealloc

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.tableView.separatorColor = [UIColor darkGrayColor];

    CGRect frame = CGRectMake(50.0f, 120.0f, 220.0f, 155.0f);
    _explanationView = [[UIView alloc] initWithFrame:frame];
    _explanationView.userInteractionEnabled = NO;
    _explanationView.backgroundColor = [UIColor whiteColor];
    _explanationView.opaque = YES;
    _explanationView.layer.borderColor = [UIColor darkGrayColor].CGColor;
    _explanationView.layer.borderWidth = 1.0f;
    _explanationView.layer.cornerRadius = 10.0f;
    _explanationView.layer.masksToBounds = YES;

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20.0f, 0.0f, 180.0f, 145.0f)];
    label.backgroundColor = [UIColor whiteColor];
    label.textColor = [UIColor darkGrayColor];
    label.numberOfLines = 0;
    label.lineBreakMode = UILineBreakModeWordWrap;
    label.font = [UIFont systemFontOfSize:14.0f];
    label.text = @"Explanation of this screen...";

    [_explanationView addSubview:label];
    [self.tableView addSubview:_explanationView];
}

我发现我必须将解释视图放在viewDidAppear:方法的前面,否则tableview的分隔线在下面永久可见。

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self.tableView bringSubviewToFront:_explanationView];
}

如何阻止tableview的分隔线在我的自定义视图下方短暂显示?

1 个答案:

答案 0 :(得分:1)

我发现这个answer表示在tableView中处理自定义子视图的顺序可以在layoutSubviews方法中完成。