首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取UIView相对于其superview的superview的位置

获取UIView相对于其superview的superview的位置
EN

Stack Overflow用户
提问于 2013-07-10 21:46:23
回答 8查看 97.9K关注 0票数 111

我有一个UIView,在其中我安排了UIButtons。我想找出那些UIButtons的位置。

我知道buttons.frame会给我位置,但它只会给我它的直接superview的位置。

有没有办法找到这些按钮的位置,与UIButtons superview的superview有关?

例如,假设有一个名为"firstView“的UIView。

然后,我有了另一个UIView,"secondView“。这个"SecondView“是"firstView”的子视图。

然后我将UIButton作为"secondView“的子视图。

代码语言:javascript
复制
->UIViewController.view
--->FirstView A
------->SecondView B
------------>Button

现在,我们有没有办法找到UIButton相对于"firstView“的位置?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-07-10 21:50:44

您可以使用以下命令:

Objective-C

代码语言:javascript
复制
CGRect frame = [firstView convertRect:buttons.frame fromView:secondView];

斯威夫特

代码语言:javascript
复制
let frame = firstView.convert(buttons.frame, from:secondView)

文档参考:

https://developer.apple.com/documentation/uikit/uiview/1622498-convert

票数 215
EN

Stack Overflow用户

发布于 2018-04-15 18:42:21

虽然不是特定于所问的层次结构中的按钮,但我发现这更容易可视化和理解:

从这里:original source

ObjC:

代码语言:javascript
复制
CGPoint point = [subview1 convertPoint:subview2.frame.origin toView:viewController.view];

Swift:

代码语言:javascript
复制
let point = subview1.convert(subview2.frame.origin, to: viewControll.view)
票数 53
EN

Stack Overflow用户

发布于 2017-08-12 14:43:39

针对Swift 3更新了

代码语言:javascript
复制
    if let frame = yourViewName.superview?.convert(yourViewName.frame, to: nil) {

        print(frame)
    }

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17572304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档