我实际上要做的是将WebKitView放入ScreenSaver(继承NSView)。我是MacOS X和Cocoa的新手(但我对Objective-C非常熟悉并且使用了GNUStep的某些部分)。我需要一些布局吗?我想在整个NSView中只显示一个控件。
答案 0 :(得分:4)
在initWithFrame:isPreview:
方法中,在the usual way中创建一个WebView,然后向自己发送一条addSubview:
消息,并传递网络视图:
webView = [[WebView alloc] initWithFrame:frame];
[self addSubview:webView];
如果您想知道应该将哪个矩形作为WebView的框架传递,请阅读View Programming Guide。另外,不要忘记在webView
中发布dealloc
(或在initWithFrame:isPreview:
中自动发布)。
获得网络视图后,您需要将网页加载到其中。设置适当长的动画间隔(至少几秒钟),并在animateOneFrame
中加载页面:
- (void) animateOneFrame {
[[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com/"]]];
}
您可能还想处理WebViewProgressFinishedNotification
,并推迟重新加载Web视图,直到发生这种情况(以补偿缓慢或浸泡的连接)。您将使用实例变量执行此操作,您在YES
和通知处理程序方法中将其设置为initWithFrame:isPreview:
,并在NO
中测试并设置为animateOneFrame
:
- (void) animateOneFrame {
if (hasFinished) {
[[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com/"]]];
hasFinished = NO;
}
}
答案 1 :(得分:0)
[aScreenSaverView addSubview:aWebKitView];
但是,为什么只要让UIWebView自己占据整个屏幕,为什么要在屏幕保护程序视图中添加UIWebView?在不需要它们的地方引入视图层次结构并不是一个好主意,因为它增加了显示界面所需的处理。
答案 2 :(得分:0)
您也可以通过调用
来过多地关注动画片段间隔[self stopAnimation];
在animateOneFrame
方法的最后。