我遇到了一个奇怪的视觉故障,重新加载我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
,则没有视觉故障,因此它显然与透明度有关。它也不会发生在每次点击(重新加载),但大多数情况下。我无法弄清楚我需要改变什么才能让它正确绘制。任何建议将不胜感激。
答案 0 :(得分:1)
好的,基于我保留现有headerViews索引的想法,我实际上自己设法解决了这个问题。我第一次尝试的是打电话给[existingView removeFromSuperview]
,但这根本不起作用。
相反,我把它改为existingView.hidden = YES
,闪烁的神奇地消失了!你去吧虽然我无法解释为什么这样做而且removeFromSuperview
没有,但如果其他人遇到此问题,请尝试在返回新视图之前隐藏现有视图。