views:

486

answers:

2

Hi,

I have created a UIViewController and a UIView with two UIButtons in it.

self.view = [[UIView alloc]initWithFrame:CGRectMake( 0,0,320,480)];
self.view.autoresizesSubviews = YES;


 self.view.backgroundColor = [UIColor redColor];
UIView *view;
view = [[UIVew alloc]initWithFrame:CGRectMake(0,0,320,480)];
view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
UIButton *button1;
button.frame = CGRectMake(100,130,120,50);
[button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
[view addSubview:button];
[controller addSubview:view];






-(void)buttonAction:(id)sender
{
 //I have created another view for a purpose
 [view removeFromSuperview];
  UIView *view_obj;
**view_obj.backgroundColor = [UIColor greenColor];** 
view_obj.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth;
[self.view addSubview:view_obj];  
}

Problem: When I change the orientation into landscape the view which has the button is resized but when i click on the button the view with the blueColor is displayed without autoresized. Where i can see half as root view in redColor and half as the subview in greenColor.I have also overrided the ShouldAutoRotate method and done this project programmatically. Please do reply me.

A: 

Try to study this question.

Or

See following code From this question.

- (void)willAnimateSecondHalfOfRotationFromInterfaceOrientation: (UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration {    
    UIInterfaceOrientation interfaceOrientation = self.interfaceOrientation;
    if (interfaceOrientation == UIInterfaceOrientationPortrait 
        || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
    {
        button1.frame = CGRectMake(100, 33, 226, 275);
        button2.frame = CGRectMake(440, 33, 226, 275);
        button3.frame = CGRectMake(100, 360, 226, 275);
        button4.frame = CGRectMake(440, 360, 226, 275);
        button5.frame = CGRectMake(100, 693, 226, 275);
        button6.frame = CGRectMake(440, 693, 226, 275);
    }
    else 
    {
        button1.frame = CGRectMake(100, 50, 226, 275);
        button2.frame = CGRectMake(400, 50, 226, 275);
        button3.frame = CGRectMake(700, 50, 226, 275);
        button4.frame = CGRectMake(100, 400, 226, 275);
        button5.frame = CGRectMake(400, 400, 226, 275);
        button6.frame = CGRectMake(700, 400, 226, 275);
    }
}
- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation || UIInterfaceOrientationPortraitUpsideDown);
}
sugar
Hi sagar,Thanks a lot..I have tried and it sort of working.I have another issue too. When i turn it into landscape my Navigationcontroller appears slightly down from the screen. How to set it properly?
Cathy
A: 

In Interface Builder, select the view object and then in the inspector window's "View Attributes" pane make sure you have selected a status bar and a "Top Bar" of "Navigation Bar" (assuming your app has a navigation bar). You'll see these near the top in the "Simulated User Interface Elements" section. This informs the app to always leave room for these when determining the size of UIViewController's view.

Howard Cohen