IPhone - 的UIView addSubview差距在顶部(IPhone - UIView

2019-08-03 05:25发布

我有一个在MainWindow.xib中加载的视图。 这仅仅是一个在它一个UIImageView显示整个屏幕(320×480)上的图像图。 当应用程序加载时我显示此视图,然后我做了

[self.view addSubview:tabbarController.view];

标签栏控制器仅仅是一个附加给它2个查看控制器的UITabBarController。 当它增加了tabbarController的视图子视图它留下约20像素的顶部的差距。 我的应用程序确实有一个状态栏,但这基本上是争取另一个。 出现这种情况,除非我补充这我的视图控制器:

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

谁能解释这一点。 我在做

self.view = tabbarController.view;

但被告知我不应该这样做。 所以现在我添加一个子视图,但我不明白,为什么我不得不调整我的观点的的CGRect不显示的20像素。

Answer 1:

预计的UITabBarController有其视图添加为一个UIWindow的子视图,而不是像一些其他的UIView的子视图。 框架属性定义它的父内的视图的偏移量,所以执行的UITabBarController 20个像素默认抵消其视图的框架留有余地的状态栏。 你在一个非标准的方式使用的UITabBarController将它添加到一个已经被20个像素为状态栏偏移的视图。 的UITabBarController通过附加相对于它的父20个像素抵消其视图,引起你看到的间隙。

一个干净的方式来解决,这是添加的UITabBarController的视图窗口,而不是一个视图的子视图:

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

(注:keyWindow方法仅仅返回你的窗口,如果你已经叫makeKeyAndVisible否则,你可能要设置您的UIViewController一个窗口属性。)



文章来源: IPhone - UIView addSubview Gap at top