【问题标题】:UICollectionView RTL directionUICollectionView RTL 方向
【发布时间】:2014-01-12 10:07:07
【问题描述】:

xcode 中的 UIViewCollection 有两种方向状态: 1.水平 2.垂直

我正在尝试使用垂直状态,但要让它从右到左显示单元格。默认当然是从左到右。

如果我不清楚,我会举一个例子: 假设我有一个 Vertical collectionView,其中连续 3 个单元格,目前它只显示一行。当我添加另一个单元格(第 4 个单元格)时,我希望它出现在 collectionView 的右下角。目前显示在左下角。

任何帮助都会很棒,

谢谢

【问题讨论】:

    标签: ios objective-c xcode uicollectionview


    【解决方案1】:

    找到了!

    我在其 x 轴上镜像了集合视图,但随后我还需要镜像单元格。这有点麻烦,因为 UICollectionView 没有“willDisplayCell”或类似的东西。

    我就是这样做的:

    第一步 - 在 vi​​ewDidLoad 中

    self.collectionView.layer.transform = CATransform3DConcat(self.collectionView.layer.transform, CATransform3DMakeRotation(M_PI,0.0,1.0,0.0));
    

    第二步 - 在 cellForItemAtIndexPath 函数中

    [self performSelector:@selector(flipCell:) withObject:cell afterDelay:0.0];
    

    第三步 - 创建新方法

    -(void)flipCell:(YESMyZoneCollectionViewCell *)cell{
        cell.layer.transform = CATransform3DConcat(cell.layer.transform, CATransform3DMakeRotation(M_PI,0.0,1.0,0.0));
    }
    

    祝你好运……

    ---大编辑---

    我上面给出的解决方案并没有我想象的那么好,因为滚动的加载时间很长。

    所以我做了类似的事情,没有“延迟执行”部分。

    我用过这个:

      -(void)scrollViewDidScroll:(UIScrollView *)scrollView {
          NSMutableArray *visibleCells = [[NSMutableArray alloc] initWithArray:[self.collectionView visibleCells]];
    
          for (int i = 0; i < [visibleCells count]; i++) {
              customCellObject *cell = [visibleCells objectAtIndex:i];
              if (cell.isFlipped == NO) {
                  [self flipCell:cell];
              }
          }
    
      }
    

    我还必须在 cellForItemAtIndexPath 中设置 isFlipped 属性 NO,因为它们在重用时不会翻转...

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多