GridView 单元格向上滚动到 iOS 7 中的状态栏
Posted
技术标签:
【中文标题】GridView 单元格向上滚动到 iOS 7 中的状态栏【英文标题】:GMGridView cells scroll upto the statusbar in iOS 7 【发布时间】:2013-10-30 23:09:34 【问题描述】:我有一个 UIViewController,我将其设置为 UINavigationController 的 rootviewcontroller。然后在 viewcontroller 我创建一个 gmgridview 像这样:
NSInteger spacing = 15;
GMGridView *gmGridView = [[GMGridView alloc] initWithFrame:self.view.bounds];
gmGridView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view addSubview:gmGridView];
_gmGridView = gmGridView;
_gmGridView.style = GMGridViewStyleSwap;
_gmGridView.itemSpacing = spacing;
_gmGridView.minEdgeInsets = UIEdgeInsetsMake(spacing, spacing, spacing, spacing);
_gmGridView.centerGrid = YES;
_gmGridView.actionDelegate = self;
_gmGridView.sortingDelegate = self;
_gmGridView.transformDelegate = self;
_gmGridView.dataSource = self;
如果我理解正确,根据 ios7 的 UI 指南,如果您使用 UINavigationController,它会自动处理在状态栏下流动的视图。这似乎对它的大部分工作。因为如果我这样做_gmGridView.backgroundColor = [UIColor blackColor]
我可以看到gridview 不会在状态栏下方溢出。但是在滚动时,GMGridViewCells 会位于状态栏下方。我不明白为什么。
此图像显示了具有黑色背景颜色的网格视图。注意状态栏背景不是黑色的,这告诉我gridview没有出现在它后面。
这个显示滚动
【问题讨论】:
【参考方案1】:在 iOS7 中,状态栏是透明的。如果您不希望状态栏后面出现任何东西,请将根视图的框架设置为距屏幕顶部大约 30 处,并确保clipsToBounds = YES
。
GMGridView *gmGridView = [[GMGridView alloc] initWithFrame:CGRectMake(0,30,self.view.bounds.size.width,self.view.bounds.size.height-30)];
【讨论】:
@Adam- 使用 UINavgiationController 时不需要 30px 偏移量,因为它会适当地添加偏移量。 @bizsytes - 您实际上并没有向我们展示黑色的背景颜色,因此,从您发布的代码和屏幕截图中,我们无法判断gmGridView
是否出现在状态栏后面(显然确实如此)。 1)您尝试过我发布的代码吗? 2)如何设置gmGridView.clipsToBounds = YES
嗯,我在问题中有点这个问题,这可能是您正在寻找的“因为如果我这样做 _gmGridView.backgroundColor = [UIColor blackColor]我可以看到网格视图不会在状态栏下方溢出. 但是当滚动时,GMGridViewCells 会在状态栏下方。"
所以我猜gmGridView.clipsToBounds = YES
(或self.view.clipsToBounds = YES
)也不起作用?以上是关于GridView 单元格向上滚动到 iOS 7 中的状态栏的主要内容,如果未能解决你的问题,请参考以下文章
Swift iOS -CollectionView 如何将单元格滚动到屏幕外
Objective -C XCTest:如何在表格单元格中一直向上滑动