gpt4 book ai didi

ios - 使用 UIAttachmentBehavior 和自动布局约束拖动 UIView

转载 作者:行者123 更新时间:2023-11-29 03:17:26 29 4
gpt4 key购买 nike

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

ScrollView 用于启用双指缩放。我希望能够使用新的 UIAttachmentBehavior 使用 UIPanGestureRecognizer 移动 ScrollView 。这在没有自动布局的情况下运行良好,但启用自动布局后, ScrollView 内容会闪烁并且 ScrollView 会失真。

- (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;
}
}

我的猜测是,设置为 ScrollView 和 ImageView 的约束会干扰附件行为,而且 ScrollView 的 contentSize 取决于其内容及其约束。

任何想法如何使它工作将不胜感激。

编辑:用普通 View 而不是 scrollView/imageView 组合进行测试,同样的问题存在。因此,将 UIAttachmentBehavior 用于自动布局的平移目的一定是个问题。

最佳答案

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

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

关于ios - 使用 UIAttachmentBehavior 和自动布局约束拖动 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21526126/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com