【问题标题】:Animation across different iPhones跨不同 iPhone 的动画
【发布时间】:2015-08-02 01:59:30
【问题描述】:

您将如何跨多个 iPhone 屏幕制作动画?让我解释一下。

所以,目前我有一个动画,其中三个按钮以spring animation 展开。我已经设置了自动布局,整个项目没有错误或风险。

就我而言,这很糟糕,我使用了CGPoint 所以,它会像......

animationCodeMethod {

button1.center = CGPoint(x: , y: )
button2.center = CGPoint(x: , y: )
button3.center = CGPoint(x: , y: )

}

我的动画目标是让三个相互堆叠的按钮在执行时相互滑出几个像素。

o //三层堆叠

执行:->o-o-o

我知道 CGPoint 方法很糟糕。

在 iPhone 5 这样的设备上运行的功能在 iPhone 6 或 6 plus 上看起来完全不同。我知道我应该在代码中使用自动布局,但实际上不知道。您将如何设置它以使动画在所有屏幕上都有效? CGPoint 是非常特定于像素的。因此,尽管在一种屏幕尺寸上看起来不错,但在另一种屏幕尺寸上,分辨率会发生变化(更多像素),从而产生不同的结果。

非常感谢任何帮助。

【问题讨论】:

    标签: ios iphone swift animation autolayout


    【解决方案1】:

    你的问题很模糊,所以很难给你一个笼统的答案。

    使用硬编码值是使用“幻数”的一种情况,这是不好的。

    您应该设置约束,设置按钮的中心位置,将插座链接到这些约束,然后在代码中操作它们。

    如果您想分配按钮,请编写代码计算超级视图的宽度,然后划分空间以均匀放置按钮。

    【讨论】:

      【解决方案2】:

      既然您已经在使用 AutoLayout,请尝试使用 NSLayoutConstraints。将两个链接到您的 ViewController;一个是 button1 和 button2 之间的水平间距,另一个是 button2 和 button3 之间的水平间距。在动画中:

      button1And2Contraint.constant = distanceBetween
      button2And3Contraint.constant = distanceBetween
      

      明智的做法是获取超级视图的宽度并相应地设置“distanceBetween”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多