iphone sdk子视图/ superview方向问题

时间:2010-01-28 20:05:37

标签: iphone sdk rotation orientation flip

我有一个iphone sdk方向问题...

我将一个“保持”视图控制器推到navigationController上。 holdingViewController使用viewDidLoad来显示navigationController导航栏并为其添加一个翻转按钮和一个翻转按钮的选择器。然后使用UIViewAnimationTransitionNone添加一个子视图,显示包含TableView的UIView。单击翻转按钮时,保持视图控制器将删除加载的子视图,并替换另一个子视图,该子视图也包含具有tableview的视图,并使用翻转动画进行变换。翻转和改变方向时会出现问题。虽然如果我在横向模式下翻转时翻转和旋转似乎都起作用,翻转视图有点“裁剪”到纵向宽度,虽然实际上以横向显示,旋转然后没有修复它,你必须翻转,旋转回到肖像,然后再回头。看起来持有视图没有记录方向的变化,但我知道它就像我已经实现了

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];

在所有3个视图控制器上,我可以看到为每个控制器调用orientationChanged函数。

所有三个viewcontrollers都在viewDidLoad

中设置自动调整大小
self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 

我也实施了

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
 return YES;
}

有没有人有任何想法,或者更重要的是,我能做些什么来解决它?

非常感谢

1 个答案:

答案 0 :(得分:3)

我在添加子视图时遇到了类似的问题。在横向方向上,子视图正在裁剪。我必须在添加之前设置子视图的框架,以便子视图能够正确填充。

以下是修复我的问题的代码:[subcontroller.view setFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];