重新加载时,停止透明的UITableView节标题闪烁

时间:2014-09-08 18:14:22

标签: ios objective-c uitableview alpha-transparency

我遇到了一个奇怪的视觉故障,重新加载我UITableView的一部分导致半透明标题视图(alpha = 0.25)闪烁得更短,就像它在顶部添加另一个标题视图副本一样旧的,然后删除前一个。

我的标题视图本身是动态生成的UIImageView,但我已将其简化为仅UIView backgroundColor [[UIColor blackColor] colorWithAlphaComponent:0.25]的{​​{1}}问题:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0,0,tableView.width, kModPopHeaderHeight)];
    view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.25];
    view.opaque = NO;
    return view;
}

正如您所看到的,我将opaque设置为NO,但这并没有任何效果。我还尝试保留一个先前生成的视图的字典,该字典在该部分上编制索引并返回现有视图(如果已经创建)(以测试我的理论显示两个视图重叠),但这也令人惊讶地没有效果。它无论如何闪烁。

请注意,如果我将标题的alpha设置为1.0,则没有视觉故障,因此它显然与透明度有关。它也不会发生在每次点击(重新加载),但大多数情况下。我无法弄清楚我需要改变什么才能让它正确绘制。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

好的,基于我保留现有headerViews索引的想法,我实际上自己设法解决了这个问题。我第一次尝试的是打电话给[existingView removeFromSuperview],但这根本不起作用。

相反,我把它改为existingView.hidden = YES,闪烁的神奇地消失了!你去吧虽然我无法解释为什么这样做而且removeFromSuperview没有,但如果其他人遇到此问题,请尝试在返回新视图之前隐藏现有视图。