居中自定义大小的 UIModalPresentationPageSheet?

Posted

技术标签:

【中文标题】居中自定义大小的 UIModalPresentationPageSheet?【英文标题】:Centering a custom sized UIModalPresentationPageSheet? 【发布时间】:2013-01-14 18:14:15 【问题描述】:

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

将以下代码添加到显示为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】:

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

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 或其他一些句柄来侥幸。

【讨论】:

感谢您的回复。 presentModalViewControllerios6 中已贬值,我的 VC 正在通过故事板呈现。不过,如果没有其他方法可以解决这个问题,我可能最终会使用这个解决方案,所以谢谢! iOS6 中的 presentViewController 也应该如此。刚刚从我目前打开的项目中获取了这段代码。无论哪种方式+1都是一个好问题。希望有一种更好的方式,那就是封装在视图本身中。甚至更好的方法来创建可应用于任何视图的自定义 ModalPresentationStyles。

以上是关于居中自定义大小的 UIModalPresentationPageSheet?的主要内容,如果未能解决你的问题,请参考以下文章

PHP实现的自定义图像居中裁剪函数示例

DW设计网页如何使DIV能自适应窗口大小居中显示,并且兼容IE、火狐、谷歌、opera等浏览器?

使用窗口调整自定义视图的大小

图片大小自适应垂直居中的方法(移动端)

垂直居中标题页

为啥我的 UIViewController 被加载了两次? IOS 7