首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UITabBarController显示屏

UITabBarController显示屏
EN

Stack Overflow用户
提问于 2013-04-25 20:29:22
回答 4查看 1.7K关注 0票数 0

我是iOS开发的新手。我正在开发一个使用标签栏控制器的应用程序。我正在以编程方式设置选项卡栏控制器的框架,但是当我切换到iPhone 5时,选项卡栏项目和主视图之间会产生空白。以下是iPhone 5模拟器上的应用程序的屏幕截图。

下面是我为UITabBarController设置框架的代码行

代码语言:javascript
运行
复制
[rootTabBarController.view setFrame:CGRectMake(0,-20,320, 480)];
EN

回答 4

Stack Overflow用户

发布于 2013-04-25 20:32:56

放入这行代码并检查它,您必须相应地设置框架。

代码语言:javascript
运行
复制
if ([[UIScreen mainScreen] bounds].size.height == 568)
     {

       [rootTabBarController.view setFrame:CGRectMake(0,0,320, 568)];
     }
 else
     {
        [rootTabBarController.view setFrame:CGRectMake(0,0,320, 480)];
     }
票数 1
EN

Stack Overflow用户

发布于 2013-04-25 20:35:08

just.dont.do.it (不设置帧)!

最简单、最干净的技术是:

YourAppDelegate.h:

代码语言:javascript
运行
复制
@property(nonatomic,retain) UITabBarController * tabBarController;

YourAppDelegate.m:

代码语言:javascript
运行
复制
@synthesize tabBarController;
#pragma mark -
#pragma mark Application lifecycle

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

self.tabBarController = [[[UITabBarController alloc] init] autorelease];

UINavigationController      *viewController1 = [[[UINavigationController alloc] initWithRootViewController:[[[UIViewController alloc] init] autorelease]] autorelease];

UINavigationController      *viewController2 = [[[UINavigationController alloc] initWithRootViewController:[[[UIViewController alloc] init] autorelease]] autorelease];

self.tabBarController.viewControllers = @[viewController1, viewController2];
self.tabBarController.customizableViewControllers = nil;

self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];


return YES;

}

一切都会好起来的。框架,旋转,自动调整大小,在iPhone,iPad等。

顺便说一句,你可以在Xcode中用"Tab Bar application“模板创建一个新项目,看看Apple是怎么做的

然后..。(建议,将来可以帮助你) UITabBarController必须位于视图层次结构的顶部(直接在UIWindow上)才能正确旋转等,我的示例代码包含了它(它可以为你节省一些将来的时间)

票数 0
EN

Stack Overflow用户

发布于 2013-04-25 20:37:26

这是因为早期的iPhones和iPhone 5之间存在高度差异。

您可以通过两种方式解决此问题:

在iPhone 5上运行时手动设置帧大小。

代码语言:javascript
运行
复制
BOOL isIphone5 = (([[UIDevice currentDevice] userInterfaceIdiom] 
== UIUserInterfaceIdiomPhone) && (([UIScreen mainScreen].bounds.size.height) >= 568));
if(isIphone5)
{
   [rootTabBarController.view setFrame:CGRectMake(0,0,320, 568)];
}
else{
   [rootTabBarController.view setFrame:CGRectMake(0,0,320, 480)];
}

或者,您可以将AutoResizingmasks设置为让视图自动调整大小以适应新的屏幕大小或方向(自动调整大小的作用取决于视图的定义)。

代码语言:javascript
运行
复制
[rootTabBarController.view setAutoResizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16214819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档