Bri*_*ian 15 iphone uikit uiview
我有一个加载在MainWindow.xib中的视图.它只是一个带有uiimageview的视图,在整个屏幕上显示图像(320 X 480).当应用程序加载时,我显示此视图,然后我执行
[self.view addSubview:tabbarController.view];
Run Code Online (Sandbox Code Playgroud)
选项卡栏控制器只是一个UITabBarController,添加了2个视图控制器.当它将tabbarController的视图添加到子视图时,它会在大约20px的顶部留下一个间隙.我的应用程序确实有一个状态栏,但这基本上是另一个的空间.除非我将此添加到我的视图控制器,否则会发生
self.view.frame = CGRectMake(0, 0, 320, 480);
Run Code Online (Sandbox Code Playgroud)
谁能解释一下呢.我在做
self.view = tabbarController.view;
Run Code Online (Sandbox Code Playgroud)
但被告知我不应该这样做.所以现在我添加了一个子视图,但我不明白为什么我必须调整视图的CGRect以不显示20px.
cdu*_*uhn 17
UITabBarController期望将其视图添加为UIWindow的子视图,而不是其他一些UIView的子视图.frame属性定义了视图在其superview中的偏移量,因此UITabBarController实现默认情况下将其视图的帧偏移20个像素,为状态栏留出空间.您正在以非标准方式使用UITabBarController,方法是将其添加到状态栏已偏移20像素的视图中.UITabBarController相对于其超视图将其视图偏移了20个像素,从而导致您看到的间隙.
解决此问题的一种简洁方法是将UITabBarController的视图添加为窗口的子视图而不是视图:
[[[UIApplication sharedApplication] keyWindow] addSubview:tabbarController.view];
Run Code Online (Sandbox Code Playgroud)
(注意:如果你已经调用了makeKeyAndVisible,keyWindow方法将只返回你的窗口.否则,你可能想在你的UIViewController上设置一个window属性.)
归档时间: |
|
查看次数: |
12980 次 |
最近记录: |