Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 如何将普通控件放入NSView?_Cocoa_Webkit_Nsview_Screensaver - Fatal编程技术网

Cocoa 如何将普通控件放入NSView?

Cocoa 如何将普通控件放入NSView?,cocoa,webkit,nsview,screensaver,Cocoa,Webkit,Nsview,Screensaver,我实际上想做的是将WebKitView放入继承NSView的屏幕保护程序中。我对MacOS X和Cocoa完全陌生,但我非常熟悉Objective-C,并使用了GNUStep的一些部分。我需要一些布置吗?我只想在整个视图中显示一个控件 [aScreenSaverView addSubview:aWebKitView]; 但是,既然可以让UIWebView自己占据整个屏幕,为什么还要在屏幕保护程序视图中添加UIWebView呢?在不需要视图层次结构的地方引入它们不是一个好主意,因为它增加了显示界

我实际上想做的是将WebKitView放入继承NSView的屏幕保护程序中。我对MacOS X和Cocoa完全陌生,但我非常熟悉Objective-C,并使用了GNUStep的一些部分。我需要一些布置吗?我只想在整个视图中显示一个控件

[aScreenSaverView addSubview:aWebKitView];
但是,既然可以让UIWebView自己占据整个屏幕,为什么还要在屏幕保护程序视图中添加UIWebView呢?在不需要视图层次结构的地方引入它们不是一个好主意,因为它增加了显示界面所需的处理

但是,既然可以让UIWebView自己占据整个屏幕,为什么还要在屏幕保护程序视图中添加UIWebView呢?在不需要视图层次结构的地方引入视图层次结构不是一个好主意,因为它增加了显示界面所需的处理。

在您的方法中,在中创建一个WebView,然后向自己发送一条addSubview:消息,传递web视图:

webView = [[WebView alloc] initWithFrame:frame];
[self addSubview:webView];
如果您想知道应该传递哪个矩形作为WebView的框架,请阅读。另外,不要忘记在dealoc中释放webView,或者在initWithFrame:isPreview:中自动释放webView

拥有web视图后,需要将页面加载到其中。设置适当长的动画间隔至少几秒钟,并在animateOneFrame中加载页面:

您可能还希望处理WebViewProgressFinishedNotification,并推迟重新加载web视图,直到发生这种情况,以补偿连接缓慢或中断。您将使用实例变量执行此操作,在initWithFrame:isPreview:和您的通知处理程序方法中将该变量设置为YES,在animateOneFrame:

在您的方法中,在中创建一个web视图,然后向自己发送addSubview:message,传递web视图:

webView = [[WebView alloc] initWithFrame:frame];
[self addSubview:webView];
如果您想知道应该传递哪个矩形作为WebView的框架,请阅读。另外,不要忘记在dealoc中释放webView,或者在initWithFrame:isPreview:中自动释放webView

拥有web视图后,需要将页面加载到其中。设置适当长的动画间隔至少几秒钟,并在animateOneFrame中加载页面:

您可能还希望处理WebViewProgressFinishedNotification,并推迟重新加载web视图,直到发生这种情况,以补偿连接缓慢或中断。您将使用实例变量执行此操作,在initWithFrame:isPreview:和您的通知处理程序方法中将该变量设置为YES,在animateOneFrame:


您也可以通过调用

[self stopAnimation];

在animateOneFrame方法的末尾。

您也可以通过调用

[self stopAnimation];

在animateOneFrame方法的末尾。

我尝试了[aScreenSaverView addSubview:aButton],但没有成功。我是否遗漏了一些东西,或者webkit视图只是更酷的按钮?我不明白你怎么说要让UIWebView占据全屏,屏幕保护程序不一定要继承屏幕保护程序吗?他是从屏幕保护程序框架而不是iphone应用程序编写屏幕保护程序的。我试过[aScreenSaverView addSubview:aButton],但没有成功。我是否遗漏了一些东西,或者webkit视图只是更酷的按钮?我不明白你怎么说要让UIWebView占据整个屏幕,屏幕保护程序不一定要继承屏幕保护程序吗?他是从屏幕保护程序框架而不是iphone应用程序编写屏幕保护程序的。我才刚刚开始,所以我的屏幕保护程序可以是任何东西。我用Xcode和屏幕保护程序标准Apple插件创建了它,但该项目没有任何nib或nix文件,只有一个View.h和一个View.m。我非常乐意使用nib文件,我该怎么做?谢谢Peter。对不起,我已经很久没有使用屏保框架了。我编辑了我的答案。彼得,我编辑了,有点重,你的答案,因为它给了我正确的方向,但我想补充一些细节。我希望选择的答案是你的,因为你给了我正确的方向。如果你觉得太多了,我可以单独写我自己的答案。我做了一些进一步的编辑来澄清和扩展你添加的信息,并用我自己的风格将其统一起来。我刚刚开始,所以我的屏幕保护程序可以是任何东西。我用Xcode和屏幕保护程序标准Apple插件创建了它,但该项目没有任何nib或nix文件,只有一个View.h和一个View.m。我非常乐意使用nib文件,我该怎么做?谢谢Peter。对不起,我已经很久没有使用屏保框架了。我编辑了我的答案。彼得,我编辑了,有点重,你的答案,因为它给了我正确的方向,但我想补充一些细节。我希望选择的答案是你的,因为你给了我正确的方向。如果你觉得太多,我可以单独写我自己的答案。我做了一些进一步的编辑,以澄清和扩展你添加的信息,并将其与 我有自己的风格。