![](/img/trans.png)
[英]View controller not displaying subviews correctly when programmatically set as root view controller
[英]View Controller not Displaying Correctly
我肯定在这里缺少一些真正的基本知识,但我什至不知道如何简单地描述问题。 我在情节提要中设计了视图控制器布局,只是一堆图像视图,标签,约束等。所有静态操作-代码所做的唯一更改是在按钮(UIViews)上添加了圆形边缘,但我也尝试过没有那个代码就没有区别。
一旦我的选择进入第二个视图控制器,它就会在iPhone上显示如下:
我已经在2种情况下(大多数情况下)正确显示了它:
无论哪种方式,这都应该是这样的:
它不会滞后,也不会有任何问题,因为即使显示不正确,UI也可以完全使用。 图像不是很大(最大约为300x600),所以我怀疑这是一个问题。 图像大小也无法说明为什么文本也不显示。 UIImageViews是否会意外地加载其图像?
我认为可能是因为退出/恢复行为而需要刷新视图。 我尝试[eachView setNeedsDisplay]
失败。
有任何想法吗?
-更新1-
这是我的情节提要的图像。 正如我所说,一切都是高度静态的。 我不知道为什么它不显示。
-更新2-
我尝试按照建议将图像文件添加到包中:
然后尝试在viewDidLoad
方法中以viewDidLoad
方式引用它们:
// Interface
@property (weak, nonatomic) IBOutlet UIImageView *backgroundImage;
// viewDidLoad
self.backgroundImage.image = [UIImage imageNamed:@"background.png"];
不幸的是没有差异。
我使用xcassets文件遇到此问题。 如果我只是将它们直接添加到组中,那么它通常就可以正常工作。 请查看此线程以获取更多详细信息。 无法在捆绑软件的xcassets中加载图像
这就是那些遇到同样问题的人的问题所在。 问题屏幕的先前视图控制器是登录屏幕。 收到凭据后,控制器将异步命中服务器以对其进行验证。 然后,服务器的响应在网络线程调用的回调函数中处理。 这意味着segue正在主线程之外被调用。 奇怪的是,segue仍然表现不错,我猜主线程花了一段时间才意识到发生了什么。
TLDR:确保在主线程上执行Segue。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.