iOS如何在屏幕外启动图像并将其动画到屏幕上
Posted
技术标签:
【中文标题】iOS如何在屏幕外启动图像并将其动画到屏幕上【英文标题】:iOS how to start image off screen and animate it onto the screen 【发布时间】:2015-06-07 21:35:09 【问题描述】:我正在尝试将图像从屏幕上从左侧滑到屏幕上并停在视图的中心点。如果可能,我希望将其限制在 y 位置(IE 图像设置在故事板中)。
我正在阅读本教程,但它在 swift 中,我无法在 Objective-c 中进行相同的分配。
http://www.raywenderlich.com/95910/uiview-animation-swift-tutorial
它说将视图设置为关闭屏幕(快速):
heading.center.x -= view.bounds.width
然后动画(快速):
UIView.animateWithDuration(0.5, animations:
self.heading.center.x += self.view.bounds.width
)
但是我不能像他们在 swift 中那样在目标 c 中操作 center.x。
我尝试通过更改边界来调整 viewWillAppear 中图像的初始位置,但没有成功。
编辑:
这是我试图让它离开屏幕的地方:
self.heading.center = CGPointMake(-200, self.heading.center.y);
无论我如何设置 x 位置,视图仍会出现在屏幕上。实际上,无论我将 x 位置设置为什么,视图都不会在 x 方向上移动。我也试过设置框架
【问题讨论】:
【参考方案1】:视图中心的 x 坐标在 Objective-C 中不能直接赋值。相反,请尝试将中心点设置为整体。在您的示例中,这可能如下所示:
[UIView animateWithDuration:0.5 animations:^
CGFloat newCenterX = self.heading.center.x + self.view.bounds.size.width;
self.heading.center = CGPointMake(newCenterX, self.heading.center.y);
];
【讨论】:
没有解释如何将它从屏幕上移开。查看我的编辑。 @lostintranslation 所以你不能以编程方式影响视图的位置吗?您是否可能在情节提要或其他方式中为其超级视图启用了Auto Layout?如果是这种情况,任何应用于您的视图的自动布局约束都会阻止您自己操作它的框架。 嗯,就是这样。很确定我有自动布局和约束。尽管这带来了关于如何在不同设备和横向/纵向上对齐和约束视图的各种其他问题。那么没有办法使用动画并有约束吗?顺便说一句,感谢您的帮助,非常感谢。 动画也会移动视图。不确定这是否重要。但是是的,最初将视图设置为关闭屏幕不起作用。【参考方案2】:尝试使用 CGAffineTransformMakeTranslation:
[UIView animateKeyframesWithDuration:5
delay:0
options:UIViewKeyframeAnimationOptionCalculationModeLinear
animations:^
view.transform = CGAffineTransformMakeTranslation(550, -40);
];
【讨论】:
以上是关于iOS如何在屏幕外启动图像并将其动画到屏幕上的主要内容,如果未能解决你的问题,请参考以下文章