获取与屏幕大小 iOS 相关的 UIView 原点

Posted

技术标签:

【中文标题】获取与屏幕大小 iOS 相关的 UIView 原点【英文标题】:get UIView origin with aspect to screen size iOS 【发布时间】:2020-05-10 20:19:49 【问题描述】:

我想从一台设备获取 UIView 原点并将其保存到服务器。在其他设备上,我想在相同的原点显示 UIView。问题在于屏幕尺寸。

假设我在 iPhone 11 中获得 UIView 位置并将其保存在服务器上。现在,我从 iPhone 6s 设备上的服务器获取保存的位置,并在该位置显示 UIView。由于屏幕尺寸不同,两个设备上的 UIView 位置不同。

有什么解决办法吗? 有什么方法可以让屏幕尺寸的原点方面适用于所有屏幕尺寸?

【问题讨论】:

因为我是新来的,如果有人想要更多解释,我在这里解释 尝试转换为屏幕坐标yourView.convert(yourView.frame.origin, to: UIScreen.main) 我试过了。如果两个设备的屏幕尺寸相同,那很好。当屏幕尺寸不同时就会出现问题 使用标准化函数将特定位置转换为相对于屏幕尺寸的“百分比”位置。 请你写示例代码对我很有帮助。 【参考方案1】:

第一个设备

let yourPositionOnView: CGPoint = ...
let screenPosition = yourView.convert(yourPositionOnView, to: UIScreen.main)
let relativePosition = CGPoint(
    x: screenPosition.x / UIScreen.main.bounds.width, 
    y: screenPosition.y / UIScreen.main.bounds.height
)

第二台设备

let screenPosition = CGPoint(
    x: relativePosition.x * UIScreen.main.bounds.width, 
    y: relativePosition.y * UIScreen.main.bounds.height
)

【讨论】:

完美运行!谢谢兄弟。

以上是关于获取与屏幕大小 iOS 相关的 UIView 原点的主要内容,如果未能解决你的问题,请参考以下文章

如何始终将 UIView 的底部与屏幕底部对齐

用于直接设置原点和大小的 UIView 类别

根据设备屏幕从 xib 文件中获取大小参数

在情节提要 IOS 7 中根据屏幕宽度和高度修复两个 uiview 大小

更改 UIView 框架大小不会更改 UITableview 框架原点 y

UIScrollView 内的 UIView 未在 3,5 英寸屏幕 iOS 上调整大小