【问题标题】:Push segue briefly displays blank white screen before loading viewPush segue 在加载视图之前短暂显示空白屏幕
【发布时间】:2012-10-30 03:13:12
【问题描述】:

在情节提要中,我有一个 TableViewController 和一个 DetailViewController 的推送序列。 TableVC 嵌套在导航控制器中。我在情节提要中将 DetailViewController 视图设置为黑色背景色。 DetailVC 还包含一个加载到其 viewDidLoad 中的 webview。我在 TableVC 的 prepareForSegue 中将 webview 的 URL 传递给 DetailVC。

在点击单元格时执行 push segue 时,我遇到了一些奇怪的行为。紧接着执行 segue 后,DetailVC 的视图背景颜色会短暂显示为白色(导航栏显示正常)。然后视图的背景颜色变为黑色(在情节提要中设置为黑色)。然后 webview 加载。我不确定是什么导致了 DetailVC 的视图背景颜色延迟。

这是我的 prepareForSegue 方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"Radio Show Playback"])
    {
        RadioShowPlaybackVC *radioShowPlaybackVC = segue.destinationViewController;
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        radioShowPlaybackVC.radioShowData = self.radioShows[indexPath.row];
    }
}

编辑:它与网络视图有关。当我删除 webview 时,segue 会根据需要进行转换。

编辑:我目前的解决方法是隐藏 webview 直到它加载。未加载时,bg 颜色显示为白色,无法修改。

【问题讨论】:

  • 您还可以设置 Web 视图的背景颜色(或者可能是它的滚动视图?)

标签: objective-c ios uitableview storyboard segue


【解决方案1】:

如果您从未解决过问题,您绝对应该听 Vito 关于主线程的回答。但还要在您的代码中添加以下内容:

[webView setBackgroundColor:[UIColor clearColor]];
[webView setOpaque:NO];

如果它仍然显示白色,只需将 clearColor 更改为 blackColor。

【讨论】:

    【解决方案2】:

    我猜你为 viewDidLoad 中的 UIWebView 执行了 loadRequest、loadHTMLString:baseURL: 或 loadData:MIMEType:textEncodingName:baseURL:

    segue 转换和 UIWebView 都将使用相同的主线程来完成它们的任务,因此“白色”背景暂时显示为将默认“白色”背景更改为黑色背景的步骤由于活动而暂时暂停UIWebView。

    尝试在 viewDidAppear 中加载 UIWebView,这样 UIWebView 将在 segue 转换完成后开始消耗主线程。

    【讨论】:

    • 你说的有道理,但似乎仍有“白色”背景延迟。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 2017-01-13
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多