我遇到了一个奇怪的视觉故障,重新加载我的 UITableView 的一部分导致半透明标题 View (alpha = 0.25)短暂地变暗,好像它在旧 View 的顶部添加了另一个标题 View 副本,然后删除上一个。

我的标题 View 本身是一个动态生成的 UIImageView,但是我已经将它简化为一个带有 UIViewbackgroundColor[[UIColor blackColor] colorWithAlphaComponent:0.25] 并且它仍然存在问题:

- (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 ,但这没有任何效果。我还尝试将之前生成的 View 的字典保留在该部分的索引上,如果已经创建,则返回现有 View (以测试我的理论,它显示两个 View 重叠),但这也令人惊讶地没有效果。无论如何它都会闪烁。

请注意,如果我将标题的 alpha 设置为 1.0 则没有视觉故障,因此它显然与透明度有关。它也不会在每次点击(重新加载)时发生,而是大多数。我只是不知道我需要改变什么才能让它正确绘制。任何意见,将不胜感激。

最佳答案

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

相反,我将其更改为 existingView.hidden = YES 并且闪烁神奇地消失了!所以你去。虽然我无法解释为什么它起作用而 removeFromSuperview 不起作用,但如果其他人遇到此问题,请尝试在返回新 View 之前隐藏现有 View 。

关于ios - 重新加载时阻止透明 UITableView 部分标题闪烁,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25730568/

10-12 14:03
查看更多