【问题标题】:The tab bar is shifted down outside the borders of the simulator标签栏在模拟器边界之外向下移动
【发布时间】:2011-11-20 07:22:38
【问题描述】:

我创建了一个空项目(XCode 4.2 IOS SDK 5),我向它添加了一个新视图并将其设置为 appDelegate 中的根视图控制器,因此当应用程序运行时,它会正确显示该视图,但是,我在视图中添加了一个 tabbarcontroller,在新创建的视图中为其创建了一个 IBOutlet,并将这一行添加到视图的 viewDidLoad 方法中:

[self.view addSubview:self.tabController.view];

所以标签栏在 iphone 模拟器中正确加载,但有一个我无法解决的小问题:该标签栏的一半在模拟器中向下移动,这会阻止标签的标题出现,与以下屏幕截图完全相同:

我该如何解决这个问题?

【问题讨论】:

    标签: iphone objective-c ios xcode ios-simulator


    【解决方案1】:

    很可能是因为状态栏。但是,因为插入控制器的子视图可以是任意大小,所以最通用的解决方案是:

    [tabController.view setFrame:self.view.bounds];
    

    (假设 self.view - 是您添加它的视图)

    【讨论】:

      【解决方案2】:

      标签栏打开的视图是 480 像素高,但由于状态栏的原因,您要添加它的视图比该视图小。这意味着它从 22px 开始太低,到 22px 太低结束 - 离开屏幕底部。

      如果您希望标签栏对应用程序来说是全局的,请将其链接到应用程序委托上的 IBOutlet,然后在您的 didFinishLaunching 方法中执行此操作:

      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
      {    
          // ...
      
          // Add the tab bar controller's view to the window and display.
          [window addSubview:tabController.view];
          [window makeKeyAndVisible];
      
          return YES;
      }
      

      这会将其添加到主窗口,而不是另一个视图。这会将其锚定到屏幕顶部,因此底部将位于屏幕底部。

      【讨论】:

      • 但是 XCode 4.2 中的 Empty Application 模板没有附带任何 xib 文件,我不想创建 tabbarcontroller 并以编程方式连接它,而是想将 tabbarcontroller 放在 MainWindow 之类的东西中.xib(就像在以前版本的 xcode 中一样),然后在 AppDelegate 中为其创建一个 IBOutlet,我该如何在 XCode 4.2 中执行此操作? p.s.这就是为什么我用 xib 文件创建了一个新的视图控制器来将 tabbarcontroller 放入其中
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      相关资源
      最近更新 更多