gpt4 book ai didi

objective-c - NSImageView 图像未在运行的应用程序中显示(但在界面生成器的 xib 中正确显示)

转载 作者:行者123 更新时间:2023-12-03 17:09:36 25 4
gpt4 key购买 nike

在将图像从主 Storyboard移至其自己的 xib 文件中的窗口中显示图像时遇到一些问题。

我为需要显示的窗口创建了一个 LoginWindow.xib,并使用常规初始化其 View Controller

self.loginViewController = [[LoginViewController alloc] initWithWindowNibName:@"LoginWindow"];
[self.loginViewController showWindow:self];

在窗口 xib 中,我将文件的所有者窗口委托(delegate)连接到窗口,因此 LoginViewController 中 - (void)windowDidLoad 中的所有代码都可以完美运行。

但是,我有一个应该显示在窗口中的 NSImageView。但是图像显示在界面生成器中,但没有显示在正在运行的应用程序中,我不知道为什么。

在下面的屏幕截图中,您可以看到该图像具有正确的图像名称(来自“Assets.xcassets”文件),并且显示在 Interface Builder 中,但不显示在正在运行的应用程序中。

(注意:图像下方的渐变 View 是自定义 View ,它重写了drawRect以创建渐变)

我还使用 UI 调试器来查看图像是否显示在渐变 View 下方,但没有成功。奇怪的是,图像甚至显示在 UI 层调试窗口中(下面的屏幕截图 2)...

我可能缺少一个需要设置或连接的简单复选框或值,因为在我将窗口从 Main.storyboard 文件移到单独的 XIB 文件中之前,所有这些都工作得很好...

有人知道如何/为什么吗?我还已经清理了整个构建目录,关闭并重新打开 xcode,...你能想到的。

Interface Builder screenshot

UI Debugger screenshot

最佳答案

我使用了 vp2698 的建议来实现此功能,并将以下几行添加到我的 windowDidLoad 方法中:

[self.logoImageView removeFromSuperview];
[self.window.contentView addSubview:self.logoImageView positioned:NSWindowAbove relativeTo:nil];

(logoImageView 是带有图像的 NSImageView 的导出)

所以:谢谢vp2698! 👍

所以是的:它现在可以工作了...但是有人可以解释为什么这不能直接从 Interface Builder 中工作吗?
为什么确切我需要在所有其他 View “之上”重新添加图像,而我已经通过界面生成器将其放置在其他所有 View 之上? (“调试 View 层次结构”屏幕截图也证实了这一点......?)

很高兴我能做到这一点,但我也确实在尝试了解问题的原因。谢谢!

关于objective-c - NSImageView 图像未在运行的应用程序中显示(但在界面生成器的 xib 中正确显示),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44735995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com