Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 仅在x轴上显示行为_Ios_Uikit Dynamics_Uisnapbehavior - Fatal编程技术网

Ios 仅在x轴上显示行为

Ios 仅在x轴上显示行为,ios,uikit-dynamics,uisnapbehavior,Ios,Uikit Dynamics,Uisnapbehavior,有没有办法让UISnapBevahiour只沿线性x轴工作 我想要一个uisnapbehavior的精确行为,但不希望它在x和y轴上都“摇动”到位,只是在x轴上 这是表格单元格的contentView中的UIView 我将发布我用来做类似事情的代码,正如我在评论中提到的,它使用了UIView动画,利用了下面的UIKit Dynamics,而不是直接使用它们 [UIView animateWithDuration:0.5 delay:0.0 u

有没有办法让UISnapBevahiour只沿线性x轴工作

我想要一个uisnapbehavior的精确行为,但不希望它在x和y轴上都“摇动”到位,只是在x轴上

这是表格单元格的contentView中的UIView


我将发布我用来做类似事情的代码,正如我在评论中提到的,它使用了UIView动画,利用了下面的UIKit Dynamics,而不是直接使用它们

[UIView animateWithDuration:0.5
                      delay:0.0
     usingSpringWithDamping:0.5
      initialSpringVelocity:0.3
                    options:UIViewAnimationOptionCurveEaseIn
                 animations:^{
                   [toView setFrame:_modalFrame];
                 }
                 completion:^(BOOL finished) {
                   [self.context completeTransition:YES];
                 }];

这呈现了模态视图,该视图在呈现时会突然出现并稍微摆动

我将发布我用来做类似事情的代码,正如我在评论中提到的,它使用了UIView动画,利用了底层的UIKit Dynamics,而不是直接使用它们

[UIView animateWithDuration:0.5
                      delay:0.0
     usingSpringWithDamping:0.5
      initialSpringVelocity:0.3
                    options:UIViewAnimationOptionCurveEaseIn
                 animations:^{
                   [toView setFrame:_modalFrame];
                 }
                 completion:^(BOOL finished) {
                   [self.context completeTransition:YES];
                 }];
这呈现了模态视图,该视图在呈现时会突然出现并稍微摆动

从它的动作块开始:

@propertynonatomic,复制无效^actionvoid

动态动画师在每个动画步骤上调用动作块

因此,在创建行为时,请执行以下操作:

UIView *view = ...
UIAttachmentBehavior *attachment = [[UIAttachmentBehavior alloc] initWithItem:view attachedToAnchor:point];
    
CGFloat xCoordinate = view.frame.origin.x;
attachment.action = ^{
   if (view.frame.origin.x != xCoordinate) {
        CGRect frame = view.frame;
        frame.origin.x = xCoordinate;
        view.frame = frame;
    }
};

[self.dynamicAnimator addBehavior:attachment];
在我的示例中,我使用UIAttachmentBehavior,但此方法也适用于UIDynamicBehavior的任何其他子类,在您的例子中,它是一个UISnapBehavior。

来自它的操作块:

@propertynonatomic,复制无效^actionvoid

动态动画师在每个动画步骤上调用动作块

因此,在创建行为时,请执行以下操作:

UIView *view = ...
UIAttachmentBehavior *attachment = [[UIAttachmentBehavior alloc] initWithItem:view attachedToAnchor:point];
    
CGFloat xCoordinate = view.frame.origin.x;
attachment.action = ^{
   if (view.frame.origin.x != xCoordinate) {
        CGRect frame = view.frame;
        frame.origin.x = xCoordinate;
        view.frame = frame;
    }
};

[self.dynamicAnimator addBehavior:attachment];

在我的示例中,我使用了UIAttachmentBehavior,但此方法也适用于UIDynamicBehavior的任何其他子类,在您的例子中是UISnapBehavior。

Hmmm有趣的是,我打算建议添加另一个动态项行为并将旋转设置为否,但我看到您已经这样做了。我用这种方法使它在y轴上工作。我走了这条路线,但最终使用了一个带有弹簧阻尼的UIView动画调用来简化,它完全满足了我的需要,而不必像那样深入了解UIKit Dynamics。嗯,有趣的是,我打算建议添加另一个动态项行为并将旋转设置为“否”,但我看到你已经这样做了。我用这种方法使它在y轴上工作。我走了这条路线,但最终通过使用带有弹簧阻尼的UIView动画调用来简化。该调用完全满足了我的需要,而不必像那样深入了解UIKit Dynamics。是的,我的旧实现使用动画。@CoCoLoadElica给出的答案是正确的。我尝试使用UIKit Dynamics,但无法将UISnapBehavior锁定到x轴。是的,我的旧实现使用动画。@CoCoLoadElica给出的答案是正确的。我尝试使用UIKit Dynamics,但是无法将UISNapBehavior锁定到x轴。这应该是答案。当存在多个活动行为时,这是否有效?这应该是答案。当存在多个活动行为时,这是否有效?