我有一个带有自定义布局的UICollectionView,并尝试显示装饰视图。
用一些代码说明的问题:
attributeDecorationTime.frame = CGRectMake(0.0f,
0.0f,
[self getXOffset],
(epgCollectionView.bounds.size.height+epgCollectionView.contentOffset.y));
此代码应该显示一个装饰视图,如果 [self getXOffest] 值位于屏幕中心,则该视图将屏幕分成两部分。左侧是装饰视图,右侧我们可以看到未被装饰视图隐藏的半集合视图。
在iPhone模拟器上,开始时,它按预期工作,但是当我开始向下滚动一点时,我可以看到装饰视图的底部。我不想在装修视图的底部,装饰视图必须始终覆盖屏幕高度。
看起来如果我制作epgCollectionView.contentOffset.y*2,它可以工作,也许与视网膜屏幕有关?但是,如果是视网膜@2x像素问题,为什么它会覆盖屏幕???
现在,如果我使用此代码:
attributeDecorationTime.frame = CGRectMake(0.0f,
epgCollectionView.contentOffset.y,
[self getNowXOffset],
(epgCollectionView.bounds.size.height+epgCollectionView.contentOffset.y));
当我向下滚动集合视图时,装饰视图向下滚动。
当我正确理解它的含义时,装饰视图不使用与常规单元格或标题单元格相同的 x y。
现在,当我在 ipad 模拟器上运行第一个代码时,应该在 y=0 上的装饰视图从 y=74 开始,这是主视图控制器中的集合视图 y 位置。
有人可以解释我做错了什么吗???
我只想要一个覆盖iPhone/ipad上屏幕整个高度的装饰视图。
一方面不是,我对 x 值没有任何问题,它是装饰视图的宽度。这让我想到,当我更改属性时,我应该使视图无效吗?自定义布局会重新计算每次滚动时的属性。自定义布局中的 [self invalidateLayout] 似乎没有改变任何东西。
你试过吗
attributeDecorationTime.frame = CGRectMake(0.0f,
0.0f,
[self getXOffset],
(epgCollectionView.contentSize.height));
我认为您应该使用contentSize.height
来覆盖完整的内容高度而不是屏幕高度。在可滚动视图中,例如UICollectionView
内容大小通常大于屏幕大小