2011-01-24 6 views
3

Я создаю приложение, которое требует, чтобы половина страницы была веб-просмотром, а другая половина была заполнена другими вещами. Проблема в том, что когда я компоную представление в построителе пользовательского интерфейса, это правильная ширина и высота, но когда я на самом деле загружаю его, он заполняет весь экран.UIWebView в iOS

Вот код:

- (void)loadView 
{ 
    // Create a custom view hierarchy. 
    CGRect appFrame = [[UIScreen mainScreen] applicationFrame]; 
    UIView *view = [[UIView alloc] initWithFrame:appFrame]; 
    self.view = view; 
    [view release]; 

    CGRect webFrame = [[UIScreen mainScreen] applicationFrame]; 
    webView = [[UIWebView alloc] initWithFrame:webFrame]; 
    webView.backgroundColor = [UIColor whiteColor]; 
    [self.view addSubview:webView]; 

    NSString *html = @"<html><head><title>Should be half</title></head><body>I wish the answer were just 42</body></html>"; 
    [webView loadHTMLString:html baseURL:nil]; 
} 

ответ

4

Вам не нужно больше всего этого кода. Вообще говоря, вы либо создаете свою иерархию представлений программно в loadView, либо вы используете графический интерфейс Interface Builder. Вы сделали то же самое - вы создали свой вид в Interface Builder, а затем выбросили все это и сделали это программно.

Удалите свой метод loadView целиком. Это то, что уничтожает работу интерфейса Builder. Реализация по умолчанию loadView будет десериализовать ваш наконечник и создать иерархию вашего представления.

Убедитесь, что ваш IBCUTlet webView подключен к интерфейсу Builder. Вот как ваш код может ссылаться на то, что находится в nib. Когда десен будет десериализован, он сохранит экземпляр UIWebView, который вы выложили в Interface Builder в этом ivar.

Создайте метод viewDidLoad, который устанавливает веб-представление. После того как ваш файл nib будет загружен и ваша иерархия представлений будет построена, этот метод будет вызываться, поэтому все ваши представления будут действительны, и вы можете делать такие вещи, как загрузить HTML в веб-представление. Вам понадобится примерно следующее:

- (void)viewDidLoad 
{ 
    NSString *html = @"<html><head><title>Should be half</title></head><body>I wish the answer were just 42</body></html>"; 
    [webView loadHTMLString:html baseURL:nil]; 
}