我在其中一个可可WebView
作为NSSplitPane
拆分窗格的自定义视图之一的子视图。这用作某些 HTML 内容的预览。更新预览时平滑过渡
- 我
NSImageView
从WebView
- 替换
WebView
为NSImageView
- 将新的 html 加载到
WebView
- html完成加载后替换为
NSImageView
更新的WebView
这是代码的要点是:
从标题
NSImageView *previewImageView;
NSString *content;
@property (strong) IBOutlet NSView *previewContainer;
@property (strong) IBOutlet WebView *previewWebView;
从班级
- (void)updatePreview
{
previewImageView = [self imageViewFromWebView:previewWebView];
[[previewContainer animator] replaceSubview:previewWebView
with:previewImageView];
[[previewWebView mainFrame] loadHTMLString:content baseURL:nil];
}
- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
[[previewContainer animator] replaceSubview:previewImageView
with:previewWebView];
}
WebView
如果在文件中定义xib
了引用出口设置为previewWebView
和帧加载委托集,则此代码无法正常工作。Web 视图最初显示正确,可以交换为图像视图,但是当交换回来时不会显示。
如果我改为定义WebView
in 代码
// inside of viewDidAppear
NSRect frame = [previewContainer frame];
NSRect webViewFrame = NSMakeRect(0, 0, frame.size.width, frame.size.height);
previewWebView = [[WebView alloc] initWithFrame:webViewFrame];
[previewWebView setUIDelegate:self];
[previewWebView setFrameLoadDelegate:self];
[previewWebView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
[previewContainer addSubview:previewWebView];
而不是界面生成器,交换代码按预期工作。关于我如何定义WebView
使其工作的代码但在界面构建器中定义时没有什么不同的任何想法?