旋转时的UICollectionViewCell alpha值

时间:2013-04-18 20:29:30

标签: ios objective-c uicollectionview uicollectionviewcell

我有UICollectionView个自定义UICollectionViewCell。我将alpha中的UICollectionViewCell属性设置为0.0f以执行特定任务,该任务均按预期工作。但是,当我将视图旋转到横向时,单元格的alpha会将自身重置为1.0

我玩过这个并且集合视图保存了所选单元格和删除单元格等的状态,但不包含单元格的alpha值。

我尝试在didRotateFromInterfaceOrientation:上重新设置已更改单元格的Alpha值,然后在调用完成后将其更改回1.0

我试图找出UICollectionViewCell的alpha值在旋转后重置的位置。

如果我运行以下代码,我会为单元格返回所需的alpha值,但在此之后的某个时刻,它们都会变回1.0

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    [super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
    //array containing IndexPaths for cells with 0.0f alpha value
    for (NSIndexPath *path in self.selectedlettersArray) {
        LetterCellView* lsv = (LetterCellView*) [self.collectionView     cellForItemAtIndexPath:path];
        lsv.alpha = 0.0f; 
    }

    for (LetterCellView *lsv in self.collectionView.visibleCells) {

        NSLog(@"After Cell Alpha is : %f", lsv.alpha);

    } 
}

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

在集合视图中,alpha - 以及其他属性 - 无法通过常见的视图属性进行可靠管理,至少这不是预期的。

相反,您应该使用由alpha类通过UICollectionViewLayoutAttributes管理的UICollectionReusableView对象的applyLayoutAttributes:属性。

在中文阅读 UICollectionReusableView Class ReferenceUICollectionViewLayoutAttributes Class Reference

答案 1 :(得分:1)

根据Mundi的建议,UICollectionViewCell alpha属性不可靠管理,我最终添加了一个属性到我的自定义UICollectionViewCell,将其设置为可见或隐藏。我只是将单元格的内容(在我的情况下是标签)alpha设置为0或1。

现在,当我旋转设备时,它会粘在一起,虽然这似乎是一种解决方法。