2013-02-15 30 views
0

我只想获取UIViewController中包含的UIView iVar的框架坐标。例如,如果but0是IVAR,这FCN从视图控制器viewDidLoad方法称为:如何在UIViewController中获取UIView的框架坐标?

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

这总是返回0,不管其中按钮被置于与界面生成器。我错过了什么?

+0

你确定你的'but0'出口迷上了界面生成器按钮? – Tim 2013-02-15 21:37:36

+0

在UIViewController的'viewDidAppear'方法中尝试一下。 – Jeremy 2013-02-15 21:42:25

+0

是的,我确定'but0'已经连接到了IB。我也尝试在'viewDidAppear'和'viewWillAppear'中打电话。 'viewDidAppear'工作!但为什么? – jmac1163 2013-02-19 14:20:24

回答

0

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

+0

完美,谢谢。 – jmac1163 2013-02-19 14:20:49

+0

如果这是正确的答案,请标记为正确。谢谢 – Spectravideo328 2013-02-19 14:21:33

1

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

您可以尝试转换来自UIView的框架。
喜欢的东西:

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

+0

我原来的电话,但在'viewDidAppear'做了解决这个问题。那么为什么这样工作? – jmac1163 2013-02-19 13:59:56