我使用ICViewPager创建内容的选项卡。但是,布局看起来很奇怪,因为ICViewPager内容视图的顶部和底部都有奇怪的空格。

如您在下面看到的,我在屏幕顶部有一个UINavigationBar,由UINavigationController嵌入生成。然后,使UINavigationController成为UITabbar Controller中的选项卡之一。结构如下:

UITabbarController-> UINavigationController-> TabVC(包含ICViewPager)->内容视图:Content1VC,Content2VC,Content3VC

以下是TabVC中的代码(配置为<ViewPagerDataSource, ViewPagerDelegate>):

// in viewDidLoad
self.dataSource = self;
self.delegate = self;
self.edgesForExtendedLayout = UIRectEdgeNone;

对于委托方法:
#pragma mark - ViewPagerDataSource
- (NSUInteger)numberOfTabsForViewPager:(ViewPagerController *)viewPager {
    return tabsContents.count;
}

- (UIView *)viewPager:(ViewPagerController *)viewPager viewForTabAtIndex:(NSUInteger)index {

    UILabel *label = [UILabel new];
    label.text = [tabsContents objectAtIndex:index];
    label.textColor = [UIColor colorWithRed:136/255.0 green:136/255.0 blue:136/255.0 alpha:1.0f];
    [label sizeToFit];

    return label;
}

- (UIViewController *)viewPager:(ViewPagerController *)viewPager contentViewControllerForTabAtIndex:(NSUInteger)index {
    UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:[tabsVC objectAtIndex:index]];
    return vc;
}

这些功能看起来还不错,但是布局并未像预期的那样跨越整个空间。不会出现红色空格(我将TabVC视图的背景颜色设置为红色以说明问题)。如何使ICViewPager占据红色空间?

注意:仅在之后出现,这是从推送的视图控制器弹出视图或更改UITabbarController中的选项卡

ios - ICViewPager顶部和底部的奇怪空间-LMLPHP

最佳答案

我认为automaticallyAdjustsScrollViewInsetsedgesForExtendedLayout之间存在冲突。
this答案:

EdgesForExtendedLayout
基本上,使用此属性可以设置可以扩展视图的哪一部分以覆盖整个屏幕。想象一下,将UIViewController推入UINavigationController时,当该视图控制器的视图布局好后,它将在导航栏结束的地方开始,但是此属性将设置视图的哪一侧(顶部,左侧,底部,右侧)可以扩展以填充整个屏幕。



自动调整ScrollViewInsets
当视图是UIScrollView或类似的东西(如UITableView)时,将使用此属性。您希望表格从导航栏的结尾处开始,因为如果没有,您将看不到整个内容,但是同时您希望表格在滚动时覆盖整个屏幕。在这种情况下,将edgeForExtendedLayout设置为None将不起作用,因为您的表将在滚动条结束处开始滚动并且不会在其后面滚动。

因此,automaticallyAdjustsScrollViewInsets默认为YES,因此在顶部插入一个等于导航栏高度的正插入。现在,当您应用self.edgesForExtendedLayout = UIRectEdgeNone时,该插图会从导航栏下方爬出,从而导致上述问题。

10-05 18:31