1
txx 2012-05-31 01:02:39 +08:00
问题出在 viewController.view = view上
这样 会无视掉view 的 frame 默认全屏.... 试试吧 viewController.view 的 backGround Color 设为cleanColor 然后 addsubview吧啊 |
2
kejinlu 2012-05-31 01:02:49 +08:00
[self presentModalViewController:viewController animated:TRUE]; 不过这个方法目前的状态为DEPRECATED,建议使用新的吧,所看看苹果的文档。
presentModalViewController:animated: Presents a modal view managed by the given view controller to the user. (Deprecated. Use presentViewController:animated:completion: instead.) - (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated Parameters modalViewController The view controller that manages the modal view. animated If YES, animates the view as it’s presented; otherwise, does not. Discussion * On iPhone and iPod touch devices, the view of modalViewController is always presented full screen. On iPad, the presentation depends on the value in the modalPresentationStyle property. * Sets the modalViewController property to the specified view controller. Resizes its view and attaches it to the view hierarchy. The view is animated according to the transition style specified in the modalTransitionStyle property of the controller in the modalViewController parameter. |
3
kejinlu 2012-05-31 01:03:11 +08:00
看我上面 星号之间的句子
|
4
kejinlu 2012-05-31 01:06:47 +08:00
@txx 其实苹果非常不建议直接将一个viewController的view加入到另一个viewController的view我的hierarchy中,除非你清楚这样带来的后果. iOS 5.0之后新增了自定义容器试图控制器的接口,我前些日子写过一篇 关于容器的 http://geeklu.com/2012/05/custom-container-view-controller/
|
6
qichunren OP 非常感谢 @txx 的指点,你说的
··· 问题出在 viewController.view = view上 这样 会无视掉view 的 frame 默认全屏.... ··· 我不怎么明白,有相当的文档资料指出这点吗? |
7
kejinlu 2012-05-31 01:15:49 +08:00
@qichunren 你将一个view设置成一个viewController的view,然后又通过presentModalViewController的方式将这个viewController作为modalViewController展现出来,苹果的文档说了
" On iPhone and iPod touch devices, the view of modalViewController is always presented full screen. On iPad, the presentation depends on the value in the modalPresentationStyle property. " 所以在使用presentModalViewController的时候,会去改变viewController的view的frame。u楼主明白了么? |
9
txx 2012-05-31 01:19:02 +08:00
|
10
qichunren OP @txx 呀,我这个问题的提出其实就是看到cocos2d的测试中一个例子,把我搞糊涂了:
https://github.com/cocos2d/cocos2d-iphone/blob/release-2.0-rc1/tests/DirectorTest.m#L143 在143行中,虽然没有设置成全尺寸的frame,最终运行时,还是全屏效果,它是用[nav pushViewController:viewController animated:YES];这个方法来显示新创建的controller. 另外我通过调试发现 autoresizingMask 不是影响我这个问题的原因 |
12
qichunren OP @kejinlu 非常感谢。我想问一下,那除了presentModalViewController:viewController方法会将新的controller的视图铺满屏幕外,我下面的这个也会吗?
UINavigationController *nav = [app navController]; [nav pushViewController:viewController animated:YES]; 我在看cocos2d一个测试例子时,发现是这样的.https://github.com/cocos2d/cocos2d-iphone/blob/release-2.0-rc1/tests/DirectorTest.m#L143 |
13
qichunren OP InterfaceBuilder中的那个可视化的autoresizingMask设置 与相应的autoresizingMask属性代码对应有相关的资料吗?
|
14
txx 2012-05-31 01:35:01 +08:00
@qichunren nav这个要看 nav 本身的设置....有可能会留一个navigation Bar...
IB的资料啊......与其在这里问 你不如去看wwdc 讲如何使用ib。。。。 |
15
kejinlu 2012-05-31 01:42:22 +08:00
@qichunren UINavigationController push进一个viewController也是肯定会重设这个push进来的viewController的view的frame的,这个应该说成是充满UINavigationController的内容区域
|
16
clowwindy 2012-05-31 22:46:39 +08:00
楼主想做的是修改 modal view 的位置和大小吧。如果是 iPad 的话,modal view 就只有苹果定义的几种样式,其中有全屏的,有不全屏的。iPhone 则只有全屏的。
见 Presentation Styles for Modal Views 一节: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html 如果想更好的控制位置和大小,自己加 subview,自己画边框吧。 |