2015-06-09 39 views
2

我有一個動畫,在iOS 8中可以正常工作,但在iOS 7中不能正常工作。事實上,似乎有時候,部分區塊是動畫的,部分區域不是針對不同的動畫持續時間)。這很難解釋。動畫問題在iOS 7但不在iOS 8

__block BTQMenuItemView *previousToClose = nil; 

     [UIView animateWithDuration:(animated ? kAnimationDuration : 0.f) animations:^{ 
      [_menuItemViews enumerateObjectsUsingBlock:^(BTQMenuItemView *current, NSUInteger idx, BOOL *stop) { 
       BTQMenuItemView *previous = (idx > 0 ? _menuItemViews[idx-1] : nil); 

       if(previous.expanded && sender == previous) { 
        current.top  = current.savedFrame.origin.y + sender.item.contentView.height + (sender.item.titleView ? sender.item.titleView.height - sender.height : 0) + sender.item.marginTopContent; 
        sender.height += sender.item.contentView.height; 
        sender.height += sender.item.titleView.height; 
        sender.item.contentView.top = (sender.item.titleView ? sender.item.titleView.bottom : sender.titleLabel.bottom) + sender.item.marginTopContent; 
        sender.actionView.height += (sender.item.titleView ? sender.item.titleView.height - sender.actionView.height : 0); 

       } else { 
        if(previous.expanded) { 
         previous.height    = previous.savedFrame.size.height; 
         previous.actionView.height = previous.titleLabel.height; 
         previous.expanded   = NO; 
         previousToClose    = previous; 
        } 
        current.height = current.savedFrame.size.height; 
        current.top = previous.bottom; 
       } 
      }]; 
      BTQMenuItemView *lastView = [_menuItemViews lastObject]; 

      _bottomCacheView.height  = self.superview.height - self.top - lastView.bottom - _edgeInsets.bottom; 
      _bottomCacheView.top  = lastView.bottom; 

     } completion:^(BOOL finished) { 
      BTQMenuItemView *lastView = [_menuItemViews lastObject]; 
      self.height     = lastView.bottom; 
     }]; 
     [previousToClose iconWillOpen:NO]; 

回答