UICollectionViewCell内容未拉伸

时间:2018-05-01 13:17:40

标签: ios objective-c uicollectionview uicollectionviewcell

我在屏幕的整个宽度上展开了UICollectionView。我的UICollectionViewCell已从MyViewCell.xib加载。我通过以下方式设置了它的大小:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
   return CGSizeMake(CGRectGetWidth(collectionView.frame) * 0.5, CGRectGetHeight(collectionView.frame));
}

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

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

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    MyViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"myCell" forIndexPath:indexPath];
    return cell;  
}

在主视图控制器加载期间,我有:

[self.collView registerNib:[UINib nibWithNibName:@"MyViewCell" bundle:nil] forCellWithReuseIdentifier:@"myCell"];
self.collView.delegate = self;
self.collView.dataSource = self;

这使得"单元格视图"正确的大小,但其从XIB加载的内容仍然是"小"并没有拉伸。这意味着,我可以在屏幕上看到两个项目,但它们不是strechtech,只是左对齐并且固定宽度大约为50。

如果我在iPhone上使用相同的代码,它运行正常,问题只出在iPad上。两个设备都具有相同的iOS版本(10.3.3)。

1 个答案:

答案 0 :(得分:1)

您提供的代码可以正常使用。我把它翻译成Swift如下(这是我的视图控制器的完整代码:

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
    @IBOutlet weak var cv: UICollectionView!
    override func viewDidLoad() {
        super.viewDidLoad()
        self.cv.register(UINib.init(nibName: "MyViewCell", bundle: nil), forCellWithReuseIdentifier: "cell")
        self.cv.delegate = self
        self.cv.dataSource = self
    }
    func numberOfSections(in collectionView: UICollectionView) -> Int {
        return 1
    }
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 16
    }
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = cv.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
        cell.layer.borderWidth = 2
        return cell
    }
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width:self.cv.bounds.width/2, height:self.cv.bounds.height)
    }
}

这是我在iPad模拟器上看到的:

enter image description here

而且,鉴于默认的interitem间距为10,这正是我期望看到的。

MyViewCell笔尖只包含一个小黄色单元格。为了清楚起见,我添加了边框。