如何使动画视图与所有设备上的屏幕底部保持一致的距离?

吉姆

我正在开发一项功能,该功能将从UIView屏幕底部向上动画,以告诉用户他们的数据已保存。但是,它在 iPhone 11 Pro Max 上的显示位置与在 iPhone X 上不同。

iPhone 11 Pro Max(这就是我想要的样子):

在此处输入图片说明

但在 iPhone X 上:

在此处输入图片说明

我可能应该注意到我在故事板上创建了视图并@IBOutlet连接到它。在故事板上,它位于您在顶部屏幕截图中看到的位置。我没有对其施加任何限制。其余的在代码中完成。

动画代码非常简单:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    savedView.center.y += view.bounds.height // start with it off the screen 
    savedView.center.x = (view.bounds.width / 2)

}

override func viewDidAppear(_ animated: Bool) {
    super.viewWillAppear(true)

    // animate it onto the screen
    UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.6, initialSpringVelocity: 0.0, options: [], animations: {
        self.savedView.center.y -= self.view.bounds.height <-- the problem must be here

    }, completion: nil)

}

我认为这可能是由于不同的设备尺寸类别,但所有 iPhone 都是“常规”高度,所以我不认为是这样。

我怎样才能让这个视图在所有设备上都处于相同的位置(相对于屏幕底部)?

吉姆

我能够弄清楚。

问题是视图的初始center.y位置基于它在故事板中的位置从 814 开始所以它在我作为 iPhone 11 Pro 观看的情节提要上看起来不错,但是,当在具有不同尺寸的其他设备模拟器上运行时,数学不再起作用。

解决方案是center.y根据view.bounds.height在任何设备上为其提供一致的起始位置来设置位置

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    savedView.center.y = (view.bounds.height - 60) // position the view 60 pixels bottom
    savedView.center.x = (view.bounds.width / 2) // center it horizontally
    savedView.center.y += view.bounds.height // move it outside the visible bounds

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在图像之间保持一致的间距?

照明与Matlab中的动画曲面保持一致

如何使数据框中的因子水平在所有列中保持一致?

如何在具有不同画布大小的ggplot2图的网格中保持一致的轴缩放

如何获得熊猫序列的唯一价值,使发生顺序保持一致

使页面外观在不同设备上保持一致

如何使toLowerCase()和toUpperCase()在所有浏览器中保持一致

我有一个引导导航栏,该导航栏不会与按钮和搜索框保持一致-如何使其保持一致?

如何使项目即使在具有引导程序的较小设备上也保持一致

如何使行与组的第一个值(str)保持一致?

如何保持存储在作为参数传递的指针中的地址在所有函数调用中保持一致

如何使React钩子与ref保持一致

合并具有唯一值的数据框,但保持一致

HTML / CSS不会使页面在不同大小上保持一致

通过Canvas上的一系列点对对象进行动画处理,同时保持一致的速度?

如何使文件复制速度保持一致?

如何使队列持续时间保持一致

使响应的背景图像在设备之间保持一致

无论屏幕大小如何,都可以保持一致

如何解析JS日期在所有浏览器中保持一致

如何使所有屏幕在Swift中保持一致?

如何让我的div彼此保持一致的身高?

如何在运行时使用自动布局在ios中隐藏视图,以使ui保持一致?

如何使大屏幕和小屏幕的布局保持一致?总会有一些空白

如何让 Bootstrap 容器与另一个 div 保持一致?

如何使我的 mailchimp 表单在桌面和移动设备上保持一致

如何使水平对齐的文本和图标在调整屏幕大小时保持一致?

如何使用分区并保持一致性

我怎样才能每周对列表进行洗牌并使其在所有设备上保持一致?