My app utilizes both landscape mode and portrait mode and the user can switch between the two at will. 

When a view controller is presented by a parent view controller that is in **portrait orientation**, the opened view controller will have the **correct width & frame**.

However, if the parent view controller is in **landscape mode**, then on IOS6 (it works correctly on IOS7), the child view controller will be **too large** and actually a little too short also when it is presented. 

Note this is not because the values are reported incorrectly since [[UIScreen mainScreen] bounds] reports the same values regardless of the orientation the child controller is loaded in.

Any ideas on how to fix this / why this is happening? Any idea on how to force the IOS6 versions to behave like IOS7 is now behaving natively? Many thanks!!!

Edit::
Here's how the vc's are presented: 

AppDelegate

```
Launch1 *launch1 =[[Launch1 alloc] init];
self.window.rootViewController = launcher;
[self.window makeKeyAndVisible];

```

Launch1 class

```
Search *search = [[Search alloc] init];
[self presentViewController:search animated:YES completion:nil];

```

Search class

```
//load list_container
views = [[Search_custom_views alloc] initWithControllerContext:self];
[self.view addSubview:views];

```

Search\_custom\_views UIView extension:

```
- (id)initWithControllerContext:(UIViewController*)contextstart {

    //set size of the screen
    CGRect screenRect = [[UIScreen mainScreen] bounds];

    self = [super initWithFrame:screenRect];

    if (self) {
     ....

```