为什么UICollectionViewFlowLayout会影响新项目的创建位置?

时间:2014-09-19 03:09:24

标签: ios objective-c uicollectionview uicollectionviewlayout

我发现UICollectionViewFlowLayout影响了新项目的创建地点,但我不知道为什么

这是我第一次使用UICollectionView,而我无法解决的问题发生了。 这是我的代码,预计会显示一行10个按钮。

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return 10;
}

-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
    return 1;
}

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{


    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellidentifer forIndexPath:indexPath];

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
    btn.frame = CGRectMake(50, 50, 40,40);
    btn.backgroundColor = [UIColor greenColor];

    [cell addSubview:btn];

    return cell;
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

static NSString *cellidentifer = @"cell";

- (void)viewDidLoad
{
    [super viewDidLoad];

    UICollectionViewFlowLayout *flowlayout = [[UICollectionViewFlowLayout alloc]init];

    _col = [[UICollectionView alloc]initWithFrame:self.view.frame collectionViewLayout:flowlayout];
    _col.backgroundColor = [UIColor whiteColor];
    _col.contentSize = CGSizeMake(500, 500);
    _col.dataSource = self;
    _col.delegate = self;

    [_col registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:cellidentifer];

    [self.view addSubview:_col];
}

这就是我得到的

result image

然后我只是在我的代码中添加一行来改变 *这样的方向

    UICollectionViewFlowLayout *flowlayout = [[UICollectionViewFlowLayout alloc]init];
    flowlayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;

它给了我这个

enter image description here

最后我改变了,甚至更奇怪的事情发生了,顺便说一句,它不能滚动,既不垂直也不横向

enter image description here

我现在感到很困惑,谢谢

1 个答案:

答案 0 :(得分:0)

将滚动方向更改为水平时所看到的是正常的。使用流布局,单元格首先沿着一行填充(如果滚动是垂直的),直到到达内容视图的末尾,然后它将进入下一行并填充,直到所有单元格都布局为止。如果滚动是水平的,它会填充第一列向下,然后转到下一列,这就是您在第二张图片中看到的内容。我不知道你的第三张图片中发生了什么,你需要提供更多信息;您将按钮框设置为什么尺寸给出了结果?