0

Я пытаюсь показать несколько изображений с помощью UICollectionView, у меня уже есть анимация, которую я хотел (чтобы увеличить «активную» ячейку), и она отлично работает, когда я просто использую клетка. Когда я добавляю изображение в ячейку, он работает так, как предполагалось, при первой загрузке UIViewController, но после того, как я прокручу его, некоторые из UIImages автоматически изменяются, и это завинчивает все. Любая идея, почему это может случиться? Вот код, я использую, чтобы сделать анимацию (пользовательский макет):UIImageView автоматически изменяет размер на UICollectionViewCell, без видимых причин

-(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 = 1; 
      } 
     } 
    } 
    return array; 
} 


- (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity 
{ 
    CGFloat offsetAdjustment = MAXFLOAT; 
    CGFloat horizontalCenter = proposedContentOffset.x + (CGRectGetWidth(self.collectionView.bounds)/2.0); 

    CGRect targetRect = CGRectMake(proposedContentOffset.x, 0.0, self.collectionView.bounds.size.width, self.collectionView.bounds.size.height); 
    NSArray* array = [super layoutAttributesForElementsInRect:targetRect]; 

    for (UICollectionViewLayoutAttributes* layoutAttributes in array) { 
     CGFloat itemHorizontalCenter = layoutAttributes.center.x; 
     if (ABS(itemHorizontalCenter - horizontalCenter) < ABS(offsetAdjustment)) { 
      offsetAdjustment = itemHorizontalCenter - horizontalCenter; 
     } 
    } 
    return CGPointMake(proposedContentOffset.x + offsetAdjustment, proposedContentOffset.y); 
} 

и вот образ того, как она начинается, а затем, как она заканчивается после того, как я прокручиваю через него: 1st load

After scrolling

ответ

0

Я решил эту проблему. Оказывается, автоматическая компоновка iOS 6 испортила мой интерфейс. Просто пришлось играть с ограничениями, и теперь это работает.

Смежные вопросы