iPad custom size of modal view controller

前端 未结 13 2005
挽巷
挽巷 2020-12-07 08:11

I have a couple of modal view controllers of certain size. I\'m trying to avoid the use of custom views (creating full screen black translucent overlay over current view, ad

13条回答
  •  北荒
    北荒 (楼主)
    2020-12-07 09:10

    I had an issue getting the custom sized modal to center until I figured out what ViewController.view.superview.frame was set to initially. It is determined based on the UIModalPresentation type. superview.center isn't even needed(as far as my testing shows).

    Also, I set the coordinates dynamically using [UIScreen mainScreen].applicationFrame, only supporting landscape orientation for now. You have to do a conditional check to support both portrait and landscape by flipping the X/Y and Height/Width values.

    Here was my first working solution for iOS 6.0:

    ViewController.modalPresentationStyle = UIModalPresentationFormSheet;
    ViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentViewController:ViewController animated:YES completion:nil];
    ViewController.view.superview.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
    ViewController.view.superview.frame = CGRectMake(
                                                                        // Calcuation based on landscape orientation (width=height) 
                                                                        ([UIScreen mainScreen].applicationFrame.size.height/2)-(320/2),// X
                                                                        ([UIScreen mainScreen].applicationFrame.size.width/2)-(320/2),// Y
                                                                        320,// Width
                                                                        320// Height
                                                                        );
    

    And then I looked at the previous answer and face palmed. Shortens my solution a tad by replacing the last line with:

    ViewController.view.superview.bounds = CGRectMake(0, 0, 320, 320);
    

    EDIT for final solution and remarks.

提交回复
热议问题