Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone iOS UICollectionView放大中心单元格_Iphone_Ios_Core Graphics_Uicollectionview_Uicollectionviewcell - Fatal编程技术网

Iphone iOS UICollectionView放大中心单元格

Iphone iOS UICollectionView放大中心单元格,iphone,ios,core-graphics,uicollectionview,uicollectionviewcell,Iphone,Ios,Core Graphics,Uicollectionview,Uicollectionviewcell,我的UICollectionViewFlowLayout子类未正确放大UICollectionView中心的单元格。相反,当我水平滚动时,UICollectionViewCell消失并重新出现我的猜测是,问题在于活动距离值。什么是有效距离?在以下代码中如何使用它? 我正在关注WWDC 2012讲座高级UICollectionView提示,它们的代码如下所示 #define ITEM_SIZE 200 #define ACTIVE_DISTANCE 200 #define ZOOM_FACTOR

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

我正在关注WWDC 2012讲座高级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;
}
我的viewcontroller中的委托方法如下所示

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
return CGSizeMake(260, 390);
}
我的活动距离值应该是多少

谢谢

我解决了这个问题。 如果缩放为0.3,我的单元格将开始相互重叠。一旦它们与另一个细胞重叠,它们就会消失。通过将缩放比例降低到0.05左右,解决了这个问题

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