在iOS中,手动旋转视图的正确方法是什么?我有很多自定义旋转动画,我不希望我的视图完全自动旋转。
现在,我正在这样做......
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return interfaceOrientation == UIDeviceOrientationPortrait;
}
然后,我正在这样做并根据需要更改方向更改:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];
一切正常,但是......当我尝试提供动作表,MailViewController等时,它们都以纵向显示:(
如何让我的观点知道,虽然我不希望它自动旋转,但它实际上是在响应我手动处理的方向通知?
编辑:为了澄清,并不是说我的旋转不起作用,而是当我提出一个UIActionSheet时,它假设我必须是肖像画(即使我手动旋转,所以我不是),以及它显示不正确。
答案 0 :(得分:1)
手动旋转视图时尝试使用[[UIApplication sharedApplication] setStatusBarOrientation:(UIInterfaceOrientation)];
答案 1 :(得分:0)
也许你可以从shouldAutorotateToInterfaceOrientation中调用一个方法。 例如:
- (BOOL)shouldAutorotateToInterfaceOrientation (UIInterfaceOrientation)interfaceOrientation
{
if (interfaceOrientation != UIDeviceOrientationPortrait)
[self theActionYouWantToPerform]
// Return YES for supported orientations
return interfaceOrientation == UIDeviceOrientationPortrait;
}
答案 2 :(得分:0)
Anton K报道的线路
[[UIApplication sharedApplication] setStatusBarOrientation:(UIInterfaceOrientation)];
让我很好!当我想使用CGAFFineTransformMakeRotation方法手动旋转UIViewController的UIView来旋转视图PI / 2弧度时,IT只是让我休息的元素。
这一行,将STATUS BAR的ORIENTATION设置为你想要的(UIInterfaceOrientation),以使UIView“手动”旋转到(UIInterfaceOrientation)的完美外观我想要。
因此,此行还会进一步显示 UIMessageView ,显示在您指示的(UIInterfaceOrientation)中。