7

I have a UIView in a UITabController. And there is a UITableView in it.

When toggling in call status bar it doesn't do anything and the view is not automatically resized.

It assumes the right size based on whether the in call UIStatusBar was toggled when the app starts but if the UIStatusBar is toggled whilst the app is running nothing changes.

Another tab view with a UINavigationController seems to resize fine.

Here is the code

if ([indexPath indexAtPosition:0] == 0 || [indexPath indexAtPosition:0] == 1) {
        if (!airportChooser) {
            airportChooser = [[AirportChooserController alloc] init];
            airportChooser.targetController = self;
            airportChooser.view.autoresizesSubviews = YES;  
            airportChooser.view.autoresizingMask = UIViewAutoresizingFlexibleHeight;
            [airportChooser.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth];
        }
        airportChooser.target = [indexPath indexAtPosition:0];
        [self.parentViewController.parentViewController.view addSubview:airportChooser.view];
        self.parentViewController.parentViewController.view.autoresizesSubviews = YES;
        self.parentViewController.parentViewController.view.contentMode = UIViewContentModeRedraw;
        [self.parentViewController.parentViewController.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth];
        airportChooser.view.contentMode = UIViewContentModeRedraw;
        //[airportChooser open];
    }
Alex Cio
  • 6,014
  • 5
  • 44
  • 74
msaspence
  • 1,424
  • 2
  • 14
  • 25

2 Answers2

15

Did you set the resizing mask of the UIView correctly? You can set it in Interface Builder in the size tab, it's the red lines that you can click.

You can also set it in code using something like:

[view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | 
                          UIViewAutoresizingFlexibleHeight];

Also make sure the superview has set autoresizesSubviews to YES.

You can find more information about this in the UIView documentation.

Alex Cio
  • 6,014
  • 5
  • 44
  • 74
klaaspieter
  • 2,665
  • 1
  • 27
  • 32
  • 1
    I've done both of these but still no luck I'm now adding the view to the window (fixed the previous example by using push view controller) and it has the same effect as described before It adds the view in the right place depending on the position on the status bar but wont adjust once it is open if i add the sub view in application did finish launching it works fine but if i add it later as the result of user input it doesnt – msaspence Jul 29 '10 at 08:06
  • Boss! You saved my life by making me know a property "autoresizesSubviews"! I was facing an issue which was occurring while creating subviews programmatically but the superview was on storyboard. "The issse was the subviews are asking to set autoresizing which was killing me badly also after setting it properly." +1 Thumbs Up! – Prasanna May 12 '17 at 07:44
0

Whilst klaaspeiter's answer makes sense and in some cases may be the right answer in my specific case it was because I was adding a sub view to a UINavigationController's view with addSubview instead of pushViewController:view animated:NO;

msaspence
  • 1,424
  • 2
  • 14
  • 25
  • whilst this is a way round the problem it is not a fix for when you want to use addSubview as I now do :( – msaspence Jul 29 '10 at 08:03