ios - 我如何获得从一个 UIView 到另一个 UIView 的垂直距离?

标签 ios swift

如标题所示,我努力寻找一种方法来计算 UIView 之间的垂直距离。 假设我在 View Controller 中有两个按钮。我将如何获得指示 button1 底部和 button2 顶部之间距离的 CGFloat?

最佳答案

正如@lobstah 已经指出的那样,可以通过访问相关 View 的帧来计算差异。

但是,有一个必须考虑的重要细节:如果 View 共享相同的父 View ,这只能以这种简单的方式起作用。因为只有这样,帧才会在同一个坐标空间中表达。

一般的方法没有这个限制,只要 View 是同一 View 层次结构的一部分(不出现在不同的窗口上),就不会缩放/由仿射变换旋转如下:

func distanceBetween(bottomOf view1: UIView, andTopOf view2: UIView) -> CGFloat {
    let frame2 = view1.convert(view2.bounds, from: view2)
    return frame2.minY - view1.bounds.maxY
}

如果 view2 的顶部低于 view1 的底部,则距离为正。

关于ios - 我如何获得从一个 UIView 到另一个 UIView 的垂直距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58235154/

相关文章:

swift - 如何仅初始化 Swift 类中的部分属性

ios - 使用 Swift 发送电子邮件

swift - Kitura 的 session 路线?

python - Alamofire 不发送 header

swift - 在分配变量之前使用 guard-let 修改可能为 nil 的表达式

ios - 如何使用 swift 和 UIkit 创建逼真的悬崖坠落球

ios - flutter fatal error : module 'FBSDKCoreKit' not found

ios - 具有自动布局的 UITableView 中的动态单元格高度

ios - 在 URL get 请求中使用西里尔字符

ios - 在 UITableView 中,cellForRowAtIndexPath 忽略前几行