我利用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
答案 0 :(得分:3)
我认为这是n
和automaticallyAdjustsScrollViewInsets
之间的冲突。
来自this回答:
<强> edgesForExtendedLayout 强>
基本上,通过此属性,您可以设置视图的哪些边可以扩展以覆盖整个屏幕。想象一下,你将一个UIViewController推入一个UINavigationController,当该视图控制器的视图布局时,它将从导航栏结束的地方开始,但是这个属性将设置视图的哪一侧(顶部,左侧,底部,右侧)可以扩展到填满整个屏幕。
和
<强> automaticallyAdjustsScrollViewInsets 强>
当您的视图是UIScrollView或类似视图(如UITableView)时,将使用此属性。您希望您的表从导航栏结束的位置开始,因为如果没有,您将看不到整个内容,但同时您希望您的表在滚动时覆盖整个屏幕。在这种情况下,将edgesForExtendedLayout设置为None将不起作用,因为您的表将开始滚动导航栏结束的位置,并且它不会落后于它。
因此,edgesForExtendedLayout
默认为YES,因此在顶部插入一个等于导航栏高度的正插入。现在,当您应用automaticallyAdjustsScrollViewInsets
时,该插入会从导航栏下方逐渐消失,导致出现问题。