I am having an issue with my UIWebView. When the view loads it loads in either orientation fine, fills the whole page perfectly etc.
However say if I load it in portrait then rotate the device the webview does not fill all the way across to the right hand side and I cannot for the life of me figure out why.
This is my view did load method
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib
if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait){
self.measurementsWebView.frame = CGRectMake(0, 0, 320, 367);
}else if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft || [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight){
self.measurementsWebView.frame = CGRectMake(0, 0, 480, 218);
}
NSString *path = [[NSBundle mainBundle] pathForResource:@"measurements" ofType:@"png"];
[measurementsWebView loadHTMLString:[NSString stringWithFormat:@"<html><body><img src=\"file://%@\"></body></html>",path] baseURL:nil];
measurementsWebView.scalesPageToFit = YES;
}
If i look in interface builder I am trying to find the panel that allows me to set expanding width or what ever you call it, but all I can see is this.
any help would be greatly appreciated
Instead of setting the frame manually, you could also set the auto-resizing masks as:
measurementsWebView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
which will resize the webView in case you have no other elements on the screen (which, I take it, you don't have, from the values you've used when resizing
measurementsWebView
). Or, straight from the nib as shown in the following image:The masks can be set by clicking on the red bars in the box called Autosizing towards the bottom left.
viewDidLoad
is run once - when the view loads.If you want to manually adjust the frame when rotation occurs, add code to to resize it in
viewDidLayoutSubviews
which is called whenever the view rotates.In interface builder, the drop-down menu where it says 'Layout Rectangle', click it and select 'Frame Rectangle'.
Alternatively you could override the
willAnimateRotationToInterfaceOrientation:
method in your view controller and set the co-ordinates/size manually as you have done inviewDidLoad
.