我在IB中设置了UIScrollView
,其中包含UIImageView
的自动布局。您可以查看Evgenii的Github存储库,了解它的设置方式:https://github.com/evgenyneu/ios-imagescroll
scrollview用于启用双指缩放。我希望能够使用新的UIPanGestureRecognizer
使用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;
}
}
我的猜测是设置为scroll-和imageViews的约束会干扰附件行为,而scrollView的contentSize
也会依赖于其内容及其约束。
任何想法如何让它工作将不胜感激。
编辑:使用普通视图而不是scrollView / imageView组合进行测试,同样存在问题。因此,使用UIAttachmentBehavior
进行自动布局的平移目的时必须存在问题。
答案 0 :(得分:1)
您无法同时使用autolayout和UIKit Dynamics。两个系统都独立地尝试设置视图的框架,他们彼此不了解,这就是你看到闪烁的原因。
我的建议是在这种情况下不要使用autolayout。如果你真的想要使用它,你需要在启用动力学动画师之前禁用约束,然后在动态动画结束后重新启用它们。