对于同步屏幕,我在ios5上制作了一个ModalViewController。我用了这段代码:
synchViewController = [[SynchViewController alloc] initWithNibName:@"SynchViewController" bundle:nil];
synchViewController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:synchViewController animated:YES];
synchViewController.view.superview.frame = CGRectMake(0,0,SYNCHVIEW_WIDTH,SYNCHVIEW_HEIGHT);
CGRect screenBounds = [[UIScreen mainScreen] bounds];
CGPoint center = CGPointMake(CGRectGetMidX(screenBounds), CGRectGetMidY(screenBounds));
synchViewController.view.superview.center = CGPointMake(center.y, center.x);
控制器是在xib文件中设计的。这段代码有效。
现在在ios6下,presentModalViewController被折旧。我改变了方法,但现在模态视图控制器完全被移位并且尺寸错误。
我怎样才能拥有像我设计的xib布局大小的iMessage登录界面?
编辑: 它适用于以下代码: synchViewController = [[SynchViewController alloc] initWithNibName:@" SynchViewController"束:无];
synchViewController.modalPresentationStyle = UIModalPresentationFormSheet;
synchViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:synchViewController animated:YES completion:nil];
synchViewController.view.superview.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
synchViewController.view.superview.frame = CGRectMake(0,0,
SYNCHVIEW_WIDTH,// Width
SYNCHVIEW_HEIGHT// Height
);
synchViewController.view.superview.bounds = CGRectMake(0, 0, SYNCHVIEW_WIDTH, SYNCHVIEW_HEIGHT);
CGRect screenBounds = [[UIScreen mainScreen] bounds];
CGPoint center = CGPointMake(CGRectGetMidX(screenBounds), CGRectGetMidY(screenBounds));
synchViewController.view.superview.center = CGPointMake(center.y, center.x);
但是只有我将动画设置为YES。当我试图在没有动画的情况下加载它时,它又完全取代了,为什么?
答案 0 :(得分:1)
您希望通过以下代码实现什么目标?
synchViewController.view.superview.frame = CGRectMake(0,0,SYNCHVIEW_WIDTH,SYNCHVIEW_HEIGHT);
...
synchViewController.view.superview.center = CGPointMake(center.y, center.x);
模态(呈现)控制器的大小和位置由modalPresentationStyle
定义,并且尝试更改它将从不可靠地工作。
如果您想要一个不同大小的呈现控制器,您必须自己编写控制器(作为子视图控制器),将其插入视图层次结构并阻止呈现控制器上的用户交互。
但是,我强烈建议您使用默认大小的本机模态控制器。