如何删除其他人的选项卡上显示的白色顶部空间(UITabBarController)

时间:2017-01-30 14:48:44

标签: ios xamarin.ios autolayout storyboard

我正在使用Mono的Xamarin工作室,但你可以用Obj-C或Swift回复我不介意。 (请不要注意截图中的图标,设计,翻译等,这是WIP)

我有这个我无法解决的奇怪问题:

我的UIView顶部栏下面出现一个白色的空白区域,它位于UITabBarController中,起初我认为它是"调整滚动视图插图"选项已启用但不是。我也尝试删除我的UIWebView并尝试使用Label,同样的问题。

空白区域仅显示在" tabbed"在"其他"我的UITabBarController部分(当屏幕太小时)。您可以在我的iPad屏幕截图上看到白色空间不在这里,但在其他所有设备(iPhone,iPhone plus)上都会出现!

如果设备不是iPad,我可以设置负顶部约束,但这不是正确的删除方法......

您可以找到(按顺序)的屏幕截图:

  • 故事板视图
  • WebView的最高约束
  • iPhone上的空白区域(但不是在iPad和Storyboard上,不应该在这里!!)
  • StoryBoard结构
  • iPad上没有空格(这是正常的行为,我也想在较小的设备上使用它)
  • ViewController参数

StoryBoard View

The white space

Top Constraint on my WebView

Storyboard structure

No whitespace on iPad

ViewController parameters

2 个答案:

答案 0 :(得分:0)

看到白色空间正好是导航栏是一个赠品,在调整那些酒吧的东西是错误的。

您的布局中存在矛盾可能是问题的根源。你有"扩展边缘"为地图视图选择,但您将地图视图的顶部限制为顶部布局指南。顶部布局指南位于导航栏的底部,因此如果某些东西正在调整插入条形下的插图,并且知道条形高度并假设它位于条形图下方,那么这将导致。

这不能解释为什么它包含在标签栏的初始视图控制器中看起来是正确的,但是当它从更多弹出窗口出现时可能会被添加到视图中如此快速的层次结构,它不知道顶部布局指南或顶部条的确切位置,因此导致故障,而在标签栏控制器选项卡中,它在多个布局通道之一上进行调整。

答案 1 :(得分:0)

感谢您的回答,我发现那个白色空间是什么。

如果我想删除它,我必须取消选中"范围边缘 - 在顶部条形图下"然后执行(或者NavigationBar将是灰色的,请参阅Dark shadow on navigation bar during segue transition after upgrading to Xcode 5.1 and iOS 7.1):

NavigationController.NavigationBar.Translucent = false;

但是尝试解决这个问题,我尝试了以下代码:

ParentViewController.NavigationController.NavigationBar.Translucent = false;

白色空间变成了第二个NavigationBar,其中包含用于重新组织标签的工具,无需取消选中"范围边缘 - 在顶部条形图下" (特别是如果你没有将半透明设置为假,因为第二个导航栏会在它下面)。

我将保留第二个NavigationBar(https://developer.apple.com/reference/uikit/uitabbarcontroller/1621183-morenavigationcontroller),我喜欢它。但由于某种原因,直到我将ParentViewController NavigationController NavigationBar半透明设置为false才显示它...我真的不明白为什么,它应该直接出现但是......

请注意,默认情况下显示此NavigationBar的正确方法是在UITabBarController类中添加该行,而不是在每个ViewController中添加...

public partial class TabBarController : UITabBarController
{
    public TabBarController(IntPtr handle) : base(handle)
    {
    }

    public override void ViewDidLoad()
    {
        CustomizableViewControllers = null; //if you want to disable the edit button
        NavigationController.NavigationBar.Translucent = false;
        base.ViewDidLoad();
    }
}

(对不起法语截图,我的设备是法语..)

enter image description here

enter image description here

enter image description here