Ссылка на видео: (низкое качество), где вы можете увидеть все, что качается. https://drive.google.com/file/d/0B6SrhxQY65faS3pfaGF0bXBiVXFncWU0aFdsVWFpUXEwaXJ3/edit?usp=sharingВлияние Strange Wobble на симулятор iPhone 6 Plus - UIDynamics
Исправление, упомянутое ниже, не работает, когда на родном (не масштабируемом режиме), поэтому на самом деле не исправить.
[Update] Таким образом, установив один пиксель раздел застегивается на представления коллекции (у меня был нулевой левый и правый раньше), делает странность уйти, это действительно странно, почему это происходит только на iPhone 6 Plus ? Мне не нравится, как он выглядит с помощью одной пиксельной вставки, поэтому вопрос останется открытым, если кто-то знает, что может быть.
[Исходный вопрос] Я использую UIAttachmentBehaviors в своем UICollectionView, который обеспечивает удобство при просмотре коллекции. Это прекрасно работает везде, за исключением симулятора iPhone 6 Plus (на XCode 6.0.1). На iPhone 6 Plus элементы коллекции вращаются и раскачиваются (когда они должны двигаться только по оси Y. Они продолжают двигаться около минуты, а затем очень медленно оседают, в то время как фактическая анимация должна длиться только для доля секунды. Они показывают четкое движение оси X. Кто-нибудь еще заметил подобную странность с iPhone 6 плюс? Мне интересно, если это ошибка симулятора или реальная проблема, но у меня нет iPhone 6 Plus для тестирования на . Он отлично работает на тренажере iPhone 6
Мой код выглядит следующим образом, и я не могу понять, как это может привести к X координат изменения:.
-(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
{
UIScrollView *scrollView = self.collectionView;
CGFloat delta = newBounds.origin.y - scrollView.bounds.origin.y;
CGPoint touchLocation = [self.collectionView.panGestureRecognizer locationInView:self.collectionView];
[self.dynamicAnimator.behaviors enumerateObjectsUsingBlock:^(UIAttachmentBehavior *springBehaviour, NSUInteger idx, BOOL *stop) {
CGFloat yDistanceFromTouch = fabsf(touchLocation.y - springBehaviour.anchorPoint.y);
CGFloat xDistanceFromTouch = fabsf(touchLocation.x - springBehaviour.anchorPoint.x);
CGFloat scrollResistance = (yDistanceFromTouch + xDistanceFromTouch)/1500.0f;
UICollectionViewLayoutAttributes *item = springBehaviour.items.firstObject;
CGPoint center = item.center;
if (delta < 0) {
center.y += MAX(delta, delta*scrollResistance);
}
else {
center.y += MIN(delta, delta*scrollResistance);
}
item.center = center;
[self.dynamicAnimator updateItemUsingCurrentState:item];
}];
return NO;
}