【问题标题】:UIWebView inside UITableViewCell flash white and incorrect sizeUITableViewCell 内的 UIWebView 闪烁白色且大小不正确
【发布时间】:2013-06-10 00:17:44
【问题描述】:

这是我做的回购。

https://github.com/lifesaglitch/UIWebViewFlashWhite

基本思路是:

我有一个可展开的表格视图,有 2 个单元格:标题单元格和内容单元格。

当点击标题单元格时,我插入一个内容单元格,并将一个 html 字符串加载到 web 视图,这是内容单元格的子视图。

如果这是我第一次展开单元格,则 Web 视图会出现白色闪烁,并且帧大小正确。后续展开可能会有flash,但是帧大小不对。

我尝试过(在项目中)将颜色设置为清除,这不起作用。我还尝试了一个webview的委托,在加载html字符串后设置hidden = NO,但有时不调用委托回调。也许是因为可重用机制。

请从上面的链接下载我的项目并尝试一下。

下面是一些示例代码:

- (id)initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];

    if (self) {

        self.backgroundColor = [UIColor clearColor];

        self.contentView.backgroundColor = [UIColor clearColor];

    }

    return self;
}

数据源方法:

    ContentCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ContentCell"];
    [cell.contentView loadHTMLString:@"<html><body style='background-color: #ff0000'>this is contentasdoifjoiwjeofiqjweoifjqopweifj </body></html>" baseURL:nil];

编辑:

我已经提交了一个新版本:先用占位符隐藏webview,加载后取消隐藏,但是还是有白闪屏。

【问题讨论】:

  • 为什么你在你的仓库中什么都不做?
  • 我把背景色设置为透明色,这样不行
  • 我的意思是没有 UItableView,没有数据源,下载后 self.view 中什么都没有。就像一个新项目
  • 让我检查一下,抱歉。
  • @stack上次忘记推送了,现在可以下载了。

标签: iphone ios uitableview uiwebview


【解决方案1】:

首先,您需要将展开/折叠动画修改为 HeaderView,例如 Apple samplethis tutorial

然后,您需要修改 ContentCell.h 和 ContentCell.m 中的代码 不要将 contentView 属性与其他 IBOutlet 挂钩,您的视图 拖到 tableCell 后将是它的子视图。 SuperView 和 子视图具有相同的名称可能会导致崩溃。选择 cellWebView 名称并与您的 UIWebView 挂钩:

- (void)awakeFromNib{
    self.backgroundColor = [UIColor clearColor];
    [self.contentView setBackgroundColor:[UIColor clearColor]];
    [self.cellWebView setOpaque:NO];//Need to clear background of UIWebView
    self.cellWebView.backgroundColor = [UIColor clearColor];
}

【讨论】:

  • 别忘了放 [super awakeFromNib]。是不是因为 awakeFromNib 在 init 方法之前被调用?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-10
  • 2012-06-18
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
相关资源
最近更新 更多