#iphone #ios #ipad #uiwebview #interface-builder
#iPhone #iOS #iPad #uiwebview #конструктор интерфейса
Вопрос:
Я успешно внедрил видео vimeo с использованием UIWebView. Однако, поскольку я создал это в коде, мне приходится корректировать расположение в коде, и я бы предпочел сделать это через interface builder. Поправьте меня, если я ошибаюсь, я читал, что инициализация UIWebView с помощью initWithCoder
метода была способом достижения этого. Однако я не уверен, как правильно использовать этот метод, если он вообще правильный.
Вот небольшой код, чтобы показать, что я делал до сих пор:
- (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];
}
Есть идеи?
Tod
Ответ №1:
Насколько я понимаю, initWithCoder
автоматически используется средой выполнения Objective-C / Cocoa / CocoaTouch для достижения того, к чему вы стремитесь. Так что вам не нужно действительно беспокоиться об этом.
Короче говоря, если вы создадите свой пользовательский интерфейс в IB, скажем, создадите там экземпляр объекта UIWebView, определите его подключение к вашему контроллеру, тогда вы сможете использовать этот UIWebView напрямую, не беспокоясь о необходимости создавать его экземпляр.
Что я хотел бы сделать, это:
-
создание нового веб-представления в моем nib;
-
контроллер / делегат для WebView;
-
подключите делегат WebView к контроллеру / делегату;
-
подключите представление контроллера / делегата к WebView;
-
подключите RootViewController главного окна к контроллеру / делегату.
Как только вы убедитесь, что правильно определили все выходы и подключение, я просто загружаю это перо (что в случае, если это MainMenu, выполняется автоматически), у вас будут созданы экземпляры всех этих объектов, готовых к использованию (путем вызова loadHTMLString:
или чего-то еще.
Надеюсь, это поможет.
Комментарии:
1. большое спасибо, Серджио, звучит неплохо, сейчас я собираюсь попробовать ваш метод.
2. это было очень полезно, теперь все работает нормально. Только одна вещь, вы знаете, как удалить серые линии, которые появляются по краям встраивания vimeo, похоже, это какой-то сбой. Я думаю, что это также специфично для vimeo, поскольку они не появлялись на youtube. Есть идеи?
3. не беспокойтесь, я разобрался с проблемой. Небольшая корректировка размера поля во встроенном коде vimeo сделала свое дело.