在代码中初始化 UIWebView 后,如何从 IB 确定其定位?

Posted

技术标签:

【中文标题】在代码中初始化 UIWebView 后,如何从 IB 确定其定位?【英文标题】:How can I determine the positioning of UIWebView from IB when it has been initialized in code? 【发布时间】:2011-05-30 21:04:00 【问题描述】:

我已经使用 UIWebView 成功嵌入了 vimeo 视频。然而,因为我已经在代码中创建了这个,我必须调整代码中的定位,我更愿意通过界面生成器来完成。如果我错了,请纠正我,我读到使用 initWithCoder 方法初始化 UIWebView 是实现此目的的方法。但是我不确定如何正确使用这种方法,如果它完全正确的话。

这里有一段代码来展示我到目前为止所做的事情:

- (void) viewDidLoad
[super viewDidLoad];
[self embedVimeo:@"http://player.vimeo.com/video/19969613" frame:CGRectMake(300, 100, 260, 200)];
[self embedVimeo:@"http://player.vimeo.com/video/19967404" frame:CGRectMake(100, 300, 260, 200)];


- (void)embedVimeo:(NSString *)urlString frame:(CGRect)frame 
NSString *embedhtml = @"\
<html><head>\
<style type=\"text/css\">\
body \
background-color: transparent;\
color: white;\
\
</style>\
</head><body style=\"margin:0\">\
<iframe src=\"%@\" type=\"application/x-shockwave-flash\" \
width=\"%0.0f\" height=\"%0.0f\"></iframe>\
</body></html>";
NSString *html = [NSString stringWithFormat:embedHTML, urlString, frame.size.width, frame.size.height];
/*UIWebView **/ videoView = [[UIWebView alloc] initWithFrame:frame];
[videoView loadHTMLString:html baseURL:nil];

[[[videoView subviews] lastObject] setScrollEnabled:NO];
[mainView addSubview:videoView];
[videoView release];

有什么想法吗?

托德

【问题讨论】:

【参考方案1】:

据我了解,Objective-C 运行时/Cocoa/CocoaTouch 会自动使用initWithCoder 来完成您的目标。所以你不必真正担心它。

简而言之,如果您在 IB 中创建 UI,例如在其中实例化一个 UIWebView 对象,将其连接定义为您的控制器,那么您将能够直接使用该 UIWebView 而不必担心必须实例化它。

我会做的是:

    在我的 nib 中创建一个新的 Web 视图;

    WebView 的控制器/委托;

    将 WebView 委托连接到控制器/委托;

    将控制器/委托视图连接到 WebView;

    将主窗口的rootViewController连接到controller/delegate。

一旦你确定你已经正确定义了所有的出口和连接,我只需加载这个笔尖(如果它是 MainMenu 会自动完成),你将实例化所有这些对象并准备好使用(通过调用loadHTMLString: 或其他方式。

希望这会有所帮助。

【讨论】:

非常感谢 sergio,听起来不错,我现在要试试你的方法。 这非常有用,现在一切正常。您只知道如何删除出现在 vimeo 嵌入边缘的灰线,这似乎是某种故障。我认为这也是 vimeo 特有的,因为它们没有出现在 youtube 上。有什么想法吗? 别担心,我找到了问题所在。在 vimeo 嵌入代码中稍微调整边距大小就可以了。

以上是关于在代码中初始化 UIWebView 后,如何从 IB 确定其定位?的主要内容,如果未能解决你的问题,请参考以下文章

从网页控制 UIWebView

将触摸事件从覆盖 UIView 转发到 UIWebView / 如何从代码将触摸事件发送到 uiwebview

如何从 UIWebView 打开 safari.app 中的外部链接?

从 UIWebView 中删除渐变背景?

如何在 UIWebView 中打开 .csv 链接

如何从 Swift 3 中的 UIWebview 中的链接打开另一个视图?