1

UIScrollView在 IB 中有一个带有自动布局的设置,其中包含一个UIImageView. 您可以查看 Evgenii 的 Github 存储库,了解它是如何设置的:https ://github.com/evgenyneu/ios-imagescroll

滚动视图用于启用捏合缩放。我希望能够UIPanGestureRecognizer使用 new移动滚动视图UIAttachmentBehavior。这在没有自动布局的情况下效果很好,但是启用自动布局后,滚动视图内容会闪烁并且滚动视图会失真。

- (void)handlePanGesture:(id)sender
{
    CGPoint p = [_panGesture locationInView:self.view];

    if (_panGesture.state == UIGestureRecognizerStateBegan) {
        self.scrollView.userInteractionEnabled = NO;

        CGPoint center = self.view.center;
        UIOffset offset = UIOffsetMake(p.x - center.x, p.y - center.y);

        _attachBehavior = [[UIAttachmentBehavior alloc] initWithItem:self.scrollView offsetFromCenter:offset attachedToAnchor:p];
        [_animator addBehavior:_attachBehavior];
    } else if (_panGesture.state == UIGestureRecognizerStateChanged) {
        _attachBehavior.anchorPoint = p;
    }
}

我的猜测是设置为滚动和图像视图的约束会干扰附件行为,contentSize滚动视图的约束也取决于其内容和约束。

任何想法如何得到这个工作将不胜感激。

编辑:使用普通视图而不是 scrollView/imageView 组合进行测试,并且存在相同的问题。因此,使用UIAttachmentBehavior自动布局进行平移必须是一个问题。

4

1 回答 1

2

你不能同时使用自动布局和 UIKit Dynamics。两个系统都独立地尝试设置视图的框架并且它们彼此不知道,所以这就是你看到闪烁的原因。

我的建议是在这种情况下不要使用自动布局。如果您真的想使用它,您需要在启用动态动画师之前禁用约束,然后在动态动画结束后重新启用它们。

于 2014-09-20T06:53:02.557 回答