Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Centering a custom sized UIModalPresentationPageSheet?

We can create formsheet views of non-standard size using the following bit of code (below), but the resulting view isn't centered -- the x-coordinate is always where a standard sized formsheet view would be. Changing the center property of the view and superview doesn't affect anything in a useful way. How can we use a custom formsheet size that is correctly centered?

Add the following code to the view controller that is being presented as a UIModalPresentationPageSheet:

@implementation MySpecialFormsheet {
    CGRect _realBounds;
} 

- (void)viewDidLoad {
    // code below works great, but the resulting view isn't centered.
    _realBounds = self.view.bounds;
    [super viewDidLoad];
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.view.superview.bounds = _realBounds;
}
like image 804
memmons Avatar asked Mar 18 '26 02:03

memmons


1 Answers

I've only found success changing the frame after presenting it. I actually do it like so:

GameSetupViewController *gameSetup = [[GameSetupViewController alloc] init];

[gameSetup setDelegate:self];

[gameSetup setModalPresentationStyle:UIModalPresentationPageSheet];

[self presentModalViewController:gameSetup animated:YES];

[gameSetup.view.superview setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)];
[gameSetup.view.superview setFrame:CGRectMake(64, 64, 896, 640)];

But perhaps you could get away with using viewDidAppear or some other handle.

like image 91
Ryan Poolos Avatar answered Mar 19 '26 15:03

Ryan Poolos



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!