hpi*_*que 5 iphone uiwebview uitabbarcontroller uiviewcontroller uinavigationcontroller
我有一个简单的UIViewController只有一个UIWebView.UIWebView应占用所有可用空间来显示网址的内容.
我想在各个地方重用这个ViewController.在某些情况下,它将被推送到NavigationController,在某些情况下它将显示为ModalViewController.有时它可能在TabBarController中.UIWebView的大小因具体情况而异.
在不使用Interface Builder的情况下设置UIWebView框架的最佳方法是什么?换句话说,我应该如何在以下代码中初始化webViewFrame?或者还有其他我想念的东西?
- (void)viewDidLoad {
    [super viewDidLoad];
    UIWebView* webView = [[UIWebView alloc] initWithFrame:webViewFrame];
    webView.delegate = self;
    NSURLRequest* request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
    [webView loadRequest:request];
    [self.view addSubview:webView];
    [webView release];
}
我尝试过不同的可能性(self.view.frame,self.navigationController.view.frame等),但似乎没有任何东西适用于所有情况.
谢谢!
如果您没有使用NIB,那么您的-loadView方法是什么样的?它应该如下所示:
- (void)loadView
{
    UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    webView.delegate = self;
    self.view = webView
    [webView release];
}
在这种情况下,初始帧是无关紧要的.UIViewController将正确地调整您的视图大小.
但是,如果您确实要将Web视图(或任何其他视图)插入父视图,则可以使用autoresizeMask来控制视图如何使用其父视图调整大小.
例如:
    UIView* parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 200)];
    parentView.autoresizesSubviews = YES;
    UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [parentView addSubview:webView];
    self.view = parentView;
    [parentView release];
在这种情况下,webView的初始帧相对于parentView的边界.
| 归档时间: | 
 | 
| 查看次数: | 11097 次 | 
| 最近记录: |