如果您正在使用情节提要为 IOS 5 开发,这将有助于我遇到同样的问题。通常在故事板之前,我们可能会将 TabBarController 添加到 uiview 或 appdelegate 中。使用情节提要,情节提要视图并不总是必须连接到视图控制器。
要解决此问题
在子类字段类型 UITabBarController中添加新的类文件objective-c类
1 - 在情节提要中选择标签栏控制器视图
2 - 在自定义类更改UITabBarController到你新创建的类名,我叫我的 MainTabBarViewController
3 - 在你新创建的类中改变这个
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
至
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if (interfaceOrientation == UIInterfaceOrientationPortrait)
return YES;
if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
return YES;
return NO;
}
基本上正在发生的事情是您正在 Interface Builder 中创建一个结构,但这只会让您获得一部分。在这种情况下,您仍然需要创建伴随代码。一开始这让我很困惑,因为我习惯于使用 .xib 从头开始构建视图,并且通常会从 appdelegate 配置 tabbarcontroller。
您也可以像这样有条件地控制其中的每一个
if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
return NO;
if (interfaceOrientation == UIInterfaceOrientationLandscapeRight)
return NO;
if (interfaceOrientation == UIInterfaceOrientationPortrait)
return YES;
if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
return YES;
对你想要的返回yes,对你不想要的返回no。或者接受一切回报yes。