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如何在屏幕外启动图像并将其动画到屏幕上的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 8 上强制启动图像而不是启动屏幕?

如何在启动动画期间更改 iOS 应用程序图标背景颜色?

如何在 iOS 中将全屏大小的图像设置为启动屏幕?

如何在 Xcode 中设置启动屏幕图像

如何使用ScreenToGif创建一个GIF动画视频

如何在android中捕获屏幕并将其转换为图像[重复]