gpt4 book ai didi

iPhone - UIView addSubview 顶部间隙

转载 作者:行者123 更新时间:2023-12-03 18:23:28 24 4
gpt4 key购买 nike

我有一个已加载到 MainWindow.xib 中的 View 。它只是一个带有 uiimageview 的 View ,在整个屏幕(320 X 480)上显示图像。当应用程序加载时,我显示此 View ,然后执行

[self.view addSubview:tabbarController.view];

标签栏 Controller 只是一个 UITabBarController,其中添加了 2 个 View Controller 。当它将 tabbarController 的 View 添加到 subview 时,它会在顶部留下约 20px 的间隙。我的应用程序确实有一个状态栏,但这基本上是另一个状态栏的空间。除非我将其添加到我的 View Controller 中,否则会发生这种情况:

self.view.frame = CGRectMake(0, 0, 320, 480);

谁能解释一下这个。我在做

self.view = tabbarController.view;

但被告知我不应该这样做。所以现在我添加了一个 subview ,但我不明白为什么我必须调整 View 的 CGRect 以不显示 20px。

最佳答案

UITabBarController 希望将其 View 添加为 UIWindow 的 subview ,而不是其他 UIView 的 subview 。 Frame 属性定义 View 在其父 View 中的偏移量,因此 UITabBarController 实现默认将其 View 的框架偏移 20 像素,以便为状态栏留出空间。您以非标准方式使用 UITabBarController,将其添加到状态栏已偏移 20 像素的 View 中。 UITabBarController 相对于其 super View 将其 View 额外偏移 20 个像素,从而导致您看到的间隙。

解决此问题的一种简洁方法是将 UITabBarController 的 View 添加为窗口的 subview 而不是 View :

[[[UIApplication sharedApplication] keyWindow] addSubview:tabbarController.view];

(注意:如果您已经调用了 makeKeyAndVisible,keyWindow 方法只会返回您的窗口。否则,您可能需要在 UIViewController 上设置窗口属性。)

关于iPhone - UIView addSubview 顶部间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1358288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com