我是新手。我想知道如何在 iOS 中实现方向。现在iOS5(及以下)和iOS6使用的方法不同。
4种类型(PortraitUpsideDown,Portrait,Landscape left,Landscape right)中所有对象的框架是否应该设置不同?
我试过
-(BOOL)shouldAutoRotate
{
return YES;
}
但它不起作用。
我是新手。我想知道如何在 iOS 中实现方向。现在iOS5(及以下)和iOS6使用的方法不同。
4种类型(PortraitUpsideDown,Portrait,Landscape left,Landscape right)中所有对象的框架是否应该设置不同?
我试过
-(BOOL)shouldAutoRotate
{
return YES;
}
但它不起作用。
这是帮助我的代码。感谢你的帮助。
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
//Only iOS5 and below
return YES;
}
- (BOOL)shouldAutorotate {
//Only iOS6
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
//Only iOS6
return UIInterfaceOrientationMaskAll;
}
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
//iOS6 and below
if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight ) {
[self landscapeView];
}
else {
[self portraitView];
}
}
-(void) portraitView {
//Set the portrait frames here.
}
-(void) landscapeView {
//Set the landscape frames here.
}
你能更清楚一点吗?您是否要允许某些视图而不是其他视图的方向更改?如果您想在 iOS6 中允许所有旋转,只需在每个 viewController 中为下面的函数返回 yes
-(BOOL)shouldAutoRotate
{
return YES;
}
现在 iOS6 中不推荐使用 shouldAutoRotateToInterfaceOrientation 方法。
此外,如果您想在某个方向锁定某些视图控制器,请覆盖下面的方法。
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationPortrait;//whichever
}
如果您想在某些视图控制器中允许方向更改,但在其他视图控制器中不允许,您需要在每个基类和继承类中覆盖这些方法。如果您想收到有关方向更改的通知,然后手动触发视图更改,您还可以选择使用 NSNotificationCenter。让我知道您是否想详细了解如何做到这一点。
希望能帮助到你!