我有一个只有UIWebView的简单UIViewController。 UIWebView应该占用所有可用空间以显示url的内容。
我想在各个地方重用此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将负责正确调整 View 的大小。
但是,如果您实际上想将Web View (或任何其他 View )插入到父 View 中,则可以使用autoresizeMask来控制如何使用其父 View 调整 View 的大小。
例如:
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的边界的。
关于iphone - 以编程方式根据其容器调整UIViewController的大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1836554/