UICollectionView设置框架

时间:2016-07-18 08:16:41

标签: ios objective-c uitableview uicollectionview uicollectionviewcell

我在自定义导航栏下方以编程方式绘制集合视图,但如果其框架更改如下,则从顶部开始:CGRectMake(0.0,64.0,self.view.frame.size.width,self.view.frame.size .height)然后它在顶部显示黑屏我也附加了屏幕截图和代码。请告诉我如何在导航栏后启动框架并删除黑屏enter image description here: -

self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];


UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init];
collectionView_=[[UICollectionView alloc] initWithFrame:CGRectMake(0.0,64.0 ,self.view.frame.size.width , self.view.frame.size.height) collectionViewLayout:layout];


[collectionView_ setDataSource:self];
[collectionView_ setDelegate:self];

[collectionView_ registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cellIdentifier"];
[collectionView_ setBackgroundColor:[UIColor redColor]];

[self.view addSubview:collectionView_];

3 个答案:

答案 0 :(得分:0)

卸下:

self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

否则你移动self.view下的Navigation Bar,这就是为什么你看到黑色......不是因为UICollectionView。 您永远不会更改UIViewController

的self.view框架

如果您将Navigation Bar设置为不透明,则您的原点将自动置于Navigation Bar之下。 您可以使用以下命令进行更改:

self.navigationController.navigationBar.translucent = NO;

所以你的UICollectionView的框架将是:

CGRectMake(0.0, 0.0 ,self.view.frame.size.width , self.view.frame.size.height);

答案 1 :(得分:0)

尝试查看automaticallyAdjustsScrollViewInsets - 您似乎正在尝试手动设置导航栏,而系统也在尝试考虑导航栏。如果你想自己动手,你需要通过调用来告诉系统:

self.automaticallyAdjustsScrollViewInsets = false;

来自您的视图控制器。

有关详细信息,请参阅documentation

答案 2 :(得分:0)

实际上代码没有任何问题,它只是一个错误。

collectionView_=[[UICollectionView alloc] initWithFrame:CGRectMake(0.0,64.0 ,self.view.frame.size.width , self.view.frame.size.height) collectionViewLayout:layout];

此行将从顶部创建集合视图y位置64。当有导航栏时这是正确的。但从图像我可以看到你的控制器中没有导航栏。  所以请添加导航栏或简单地按照上面的答案进行更改。 即相对于UIScreen设置UICollection视图。

self.view = [[UIView alloc] initWithFrame:[self.view bounds]];

然后删除

self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

如@Jacopo Penzo所述

希望这有效。