顶部和顶部的空间奇怪ICViewPager的底部

时间:2015-10-26 04:29:17

标签: ios uinavigationcontroller uitabbarcontroller uinavigationbar icviewpager

我利用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

中的标签后才会显示

Screenshot

1 个答案:

答案 0 :(得分:3)

我认为这是nautomaticallyAdjustsScrollViewInsets之间的冲突。

来自this回答:

  

<强> edgesForExtendedLayout

     

基本上,通过此属性,您可以设置视图的哪些边可以扩展以覆盖整个屏幕。想象一下,你将一个UIViewController推入一个UINavigationController,当该视图控制器的视图布局时,它将从导航栏结束的地方开始,但是这个属性将设置视图的哪一侧(顶部,左侧,底部,右侧)可以扩展到填满整个屏幕。

  

<强> automaticallyAdjustsScrollViewInsets

     

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

因此,edgesForExtendedLayout默认为YES,因此在顶部插入一个等于导航栏高度的正插入。现在,当您应用automaticallyAdjustsScrollViewInsets时,该插入会从导航栏下方逐渐消失,导致出现问题。