虽然有几个问题的答案与我的相似,但似乎没有一个能解决我的困境。我有一个图像视图,我可以通过改变水平和垂直约束来移动它,并使用长按手势在屏幕上移动。如果这张图像没有移动一定的距离,我希望它能动画化回到原来的位置。我正在使用以下代码示例来尝试执行此操作:
if sender.state == UIGestureRecognizerState.Changed {
image1ConstraintX.constant = imageConstX + (translation.x - location.x)
image1ConstraintY.constant = imageConstY + (translation.y - location.y)
} else if sender.state == UIGestureRecognizerState.Ended {
var xPosition = self.image1.frame.origin.x + image1.frame.width/2
var yPosition = self.image1.frame.origin.y + image1.frame.width/2
imageConstX = image1ConstraintX.constant
imageConstY = image1ConstraintY.constant
if xPosition < 215 && yPosition < 210 {
self.image1ConstraintX.constant = 13
self.image1ConstraintY.constant = 17
UIView.animateWithDuration(1.3, delay: 0.0, options: nil, animations: {
self.view.layoutIfNeeded()
}, completion: nil)
}
位置. x
和位置. y
在其他地方定义为用户单击的位置
翻译. x
和翻译. y
定义为用户在超级视图中的位置
不用说,平移图像时,一切都正常。它会拖动,然后在手势结束时停止。问题是,如果用户没有将图像拖过某个位置,我希望图像动画回到其原始位置,而不是平滑过渡,它会立即回到其原始位置,而根本不会动画。根据对类似问题的其他回答,我正在设置约束条件,然后在动画宽度(animateWithDuration)中调用所需的布局(layoutIfNeeded)。
我缺少autolayout
的某些内容吗?
我需要做哪些更改才能使图像恢复到其原始位置?
我还没有对此进行测试,但在这些情况下,我的第一个冲动始终是尝试退出并延迟到主线程。因此,首先,将我在这里给出的延迟实用程序粘贴到文件中(在导入之后,但在其他所有操作之前)。现在,在很短的时间内完成最后一个案例:
if xPosition < 215 && yPosition < 210 {
delay(0.1) {
self.image1ConstraintX.constant = 13
self.image1ConstraintY.constant = 17
UIView.animateWithDuration(1.3, delay: 0.0, options: nil, animations: {
self.view.layoutIfNeeded()
}, completion: nil)
}
}
如果这还不能解决这个问题,那么我的下一个行动方针就是思考这些台词:
imageConstX = image1ConstraintX.constant
imageConstY = image1ConstraintY.constant
这些不是局部变量,那么它们是什么呢?也许设置它们会产生你没有考虑到的副作用。
我有一个,我想在点击时放大它的宽度。我设置了约束,并确保左侧的约束优先级低于我试图在右侧设置动画的约束优先级。 这是我试图使用的代码。 这是可行的,但似乎只是瞬间发生,似乎没有任何运动。我试着将其设置为10秒,以确保没有遗漏任何内容,但我得到了相同的结果。 是我控制的从IB拖到我的类中的约束的名称。
在我的人造示例中,我有以下单个视图: 如您所见,它由几个简单的约束组成: 将水平和垂直中心对齐, 高度(设置为常数) 前导空格和尾随空格(设置为常量) 我想要实现的是让这个红色/粉红色的视图从顶部“进来”。传统上,在一个没有约束的世界中,我只需修改,但我不确定在约束世界中如何进行类似操作。 为了重申我的问题,我如何使我的视图从场景开始,并为从顶部飞入的视图设置动画? 我考虑过设置垂直中心约束的动画
我花了两天时间尝试了混合和纯自动布局方法的各种解决方案,以实现在自动布局之前简单的滚动视图设置,现在它是正式的了——我一定太傻了。我主要是在故事板中设置这个(嗯,就是这样)。 所以我请求帮助。 视图树: 按钮应该水平滚动(从左到右,反之亦然)。有人能告诉我如何设置约束来使用纯自动布局实现这一点吗??? -- 我尝试了混合方法,如下所示: ...以及根据Apple的TechNote为< code>c
问题内容: 我正在使用来更新旧的应用,并且当没有广告时,它会滑出屏幕。出现广告时,它会在屏幕上滑动。基本的东西。 旧样式,我将帧设置在动画块中。新样式,我对自动布局约束有一个确定Y位置,在这种情况下,它是距父视图底部的距离,并修改常量: 横幅完全按预期移动,但没有动画。 更新:我重新观看了WWDC 12讲的“掌握自动布局的最佳实践” ,其中涵盖了动画。它讨论了如何使用CoreAnimation更新
我在viewcontroller的中央有一个UITextField(搜索字段),我正在使用UIView(liveView)创建一条细线。我以编程方式创建线视图及其约束。lineView本质上是一个下划线,当用户键入时,它在文本字段下的宽度会增加。用户按enter键后,我将调整约束,以便文本字段和视图移动到viewcontroller的顶部。我让它工作起来了,但随着线视图向上移动,它开始淡出并消失。
我有两个两个文本字段displayNameTF和emailTF。 我想设置一个文本字段的动画,使其超过另一个文本字段的顶部。 我已经将emailTF的中心存储在emailTFOrigin中,我正在将displayNameTF的中心设置为它,并设置所需的布局动画。 我得到的动画是,默认情况下,文本字段彼此相距约5点,displaynameTF直接跳到emailTF的顶部,并将动画恢复到其原始位置。