iphone - iOS UICollectionView 放大中心单元格

标签 iphone ios core-graphics uicollectionview uicollectionviewcell

我的 UICollectionViewFlowLayout 子类没有正确放大位于 UICollectionView 中心的单元格。相反,当我水平滚动时,我的 UICollectionViewCell 消失并重新出现。 我猜问题出在 ACTIVE_DISTANCE 值上。什么是 ACTIVE_DISTANCE 以及如何在以下代码中使用它?

我正在关注 WWDC 2012 Lecture Advanced UICollectionView 技巧,它们的代码如下所示......

#define ITEM_SIZE 200
#define ACTIVE_DISTANCE 200
#define ZOOM_FACTOR 0.3

-(id) init {
self = [super init];
if (self) {
    self.itemSize = CGSizeMake(ITEM_SIZE, ITEM_SIZE);
    self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
    self.minimumLineSpacing = 50;
}
return self;
}



-(NSArray*) layoutAttributesForElementsInRect:(CGRect)rect {
NSArray* array = [super layoutAttributesForElementsInRect:rect];
CGRect visibleRect;
visibleRect.origin = self.collectionView.contentOffset;
visibleRect.size = self.collectionView.bounds.size;
for (UICollectionViewLayoutAttributes* attributes in array) {
    if (CGRectIntersectsRect(attributes.frame, rect)) {
        CGFloat distance = CGRectGetMidX(visibleRect) - attributes.center.x;
        CGFloat normalizedDistance = distance / ACTIVE_DISTANCE;
        if (ABS(distance) < ACTIVE_DISTANCE) {
            CGFloat zoom = 1 + ZOOM_FACTOR*(1 - ABS(normalizedDistance));
            attributes.transform3D = CATransform3DMakeScale(zoom, zoom, 1.0);
            attributes.zIndex = round(zoom);
        }
    }
}
return array;
}

在我的代码中,我的初始化方法看起来像

-(id) init {
self = [super init];
if (self) {
}
return self;
}

我的 View Controller 中的委托(delegate)方法看起来像这样

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
return CGSizeMake(260, 390);
}

我的 ACTIVE_DISTANCE 值应该是多少?

谢谢!

最佳答案

我发现了问题。 使用 0.3 的缩放比例,我的单元格将开始相互重叠。一旦它们与不同的细胞重叠,它们就会消失。通过将缩放比例降低到大约 0.05,它解决了这个问题!

关于iphone - iOS UICollectionView 放大中心单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14309925/

相关文章:

ios - 如何使 CGContextDrawPath 在嵌套 subview 上绘制?

显示键盘时转动设备时 iPhone 应用程序崩溃

ios - Xcode 5 编辑后 UITextField 上的字体大小错误

ios - 如何使用图像创建视频时在图像更改上添加动画

ios - 核心数据,根据对象自身属性搜索对象

objective-c - 在 objective-c 中导入 header

objective-c - CGLayer绘图随着时间的过去而变慢

iphone - ios Kill 应用程序问题

iphone - 在iOS的Facebook中像在Facebook中一样在UINavigationController中向后滑动

javascript - Titanium 选项卡式 iPhone 应用程序中的内存泄漏