视图控制器未正确显示

View Controller not Displaying Correctly

我一定是遗漏了一些非常基本的东西,但我什至不知道如何简单地描述这个问题。我在我的故事板中设计了我的视图控制器布局,只是一堆图像视图、标签、约束等。所有静态 - 代码所做的唯一更改是为按钮添加圆边(UIViews),但是我也尝试过不使用该代码,但没有任何区别。

一旦我的 segue 被跟踪到第二个视图控制器,它在 iPhone:

上显示如下

我已经让它在 2 种情况下(大部分时间)正常显示:

  1. 等待。 30 秒到 10 分钟之间的任何时间。非常难以预测
  2. 按主页按钮然后恢复应用程序。有时当我这样做时文本仍然不会显示。

无论哪种方式,它应该是这样的:

它不会滞后或出现任何问题,因为 UI 即使在显示不正确时也完全可用。图片不是很大(最大的大约是 300x600)所以我怀疑这是一个问题。图像大小也不能解释文本不显示的原因。 UIImageView 是否异步加载图像?

我认为可能是因为 exit/resume 行为需要刷新视图。我尝试了 [eachView setNeedsDisplay] 但没有成功。

有什么想法吗?

-- 更新 1 --

这是我的故事板的图片。正如我所说,一切都是高度静态的。我不知道为什么它不显示。

--更新2--

我尝试按照建议将图像文件添加到包中:

然后尝试在 viewDidLoad 方法中以语法方式引用它们:

// Interface
@property (weak, nonatomic) IBOutlet UIImageView *backgroundImage;

// viewDidLoad
self.backgroundImage.image = [UIImage imageNamed:@"background.png"];

不幸的是没有区别。

我在使用 xcassets 文件时遇到过这个问题。如果我直接将它们添加到一个组中的包中,它往往会工作得很好。查看此线程以获取更多详细信息。 Impossible to load an image in xcassets on bundle

以下是遇到相同问题的人遇到的问题。问题屏幕的前一个视图控制器是登录屏幕。收到凭据后,控制器将异步访问服务器以验证它们。来自服务器的响应随后在网络线程调用的回调函数中进行处理。这意味着正在从主线程调用 segue。奇怪的是,segue 仍然表现良好我猜主线程只是花了一段时间才意识到发生了什么。

TLDR:确保在主线程上执行 Segue。