居中自定义大小的UIModalPresentationPageSheet?

时间:2013-01-14 18:14:15

标签: ios ipad cocoa-touch ios6

我们可以使用下面的代码(下面)创建非标准大小的表单视图,但生成的视图不居中 - x坐标始终是标准大小的表单视图所在的位置。更改视图和superview的center属性不会以有用的方式影响任何内容。我们如何使用正确居中的自定义表单大小?

将以下代码添加到呈现为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;
}

1 个答案:

答案 0 :(得分:2)

我只是在呈现框架后才发现改变框架的成功。我实际上是这样做的:

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)];

但也许你可以使用viewDidAppear或其他句柄来逃避。