【问题标题】:How to get frame coordinates of a UIView within a UIViewController?如何在 UIViewController 中获取 UIView 的帧坐标?
【发布时间】:2013-02-16 05:47:31
【问题描述】:

我只是想获取 UIViewController 中包含的 UIView iVar 的框架坐标。比如but0是iVar,这个fcn是从ViewController的ViewDidLoad方法中调用的:

CGFloat x = self.but0.frame.origin.x;

无论使用 Interface Builder 将按钮放置在何处,这始终返回 0。我错过了什么?

【问题讨论】:

  • 您确定您的but0 插座已连接到Interface Builder 中的按钮吗?
  • 在 UIViewController 的viewDidAppear 方法中尝试一下。
  • 是的,我确定 'but0' 已与 IB 相关联。我还尝试在“viewDidAppear”和“viewWillAppear”中拨打电话。 “viewDidAppear”有效!但为什么呢?

标签: ios objective-c


【解决方案1】:

编辑: Spectravideo328 是对的,你应该使用viewWillAppearviewDidAppear

您可以尝试从 UIView 转换框架。
类似的东西:

CGRect frame = [self.view convertRect:btn.frame fromView:tableView.frame];

【讨论】:

  • 我最初的电话,但在“viewDidAppear”中进行的确实解决了这个问题。那么为什么会这样呢?
【解决方案2】:

ViewDidLoad 加载视图,但尚未设置框架/边界。 ViewDidAppear 保证在设置框架/边界后发生。使用那个方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多