0

我有一个 UITableView,首先是表视图部分,然后是 UIView(绑定到 IBOutlet _myView),里面有一些控件(例如 UITextField,绑定到 IBOutlet _durationField)。所有这些都在情节提要中完成。我想动态移动那个 _durationField,所以我需要修改中心或框架属性。但是,viewDidLoad 中的这段代码返回零值:

CGRect durationRect = _durationField.frame;

而 TableCell 和 _myView 框架属性中的标签返回实际值,例如这不返回零:

CGRect viewRect = _myView.frame;

更改 _durationField 的 frame 属性也不会反映在 UI 中。实际上,我为 _myView 中的所有控件获得了零值,尽管它们在代码中正确绑定到 IBOutlet。此外,我可以在 viewDidLoad 中设置 _durationField.text 并且效果很好。

有任何想法吗?看起来我错过了一些简单的东西。

使用viewWillLayoutSubviews的第一个建议解决方案确实允许移动元素,但只能在呈现视图之后。所以用户可以看到它是如何移动的。这不是一个理想的行为。我想在呈现视图之前动态移动元素。

4

1 回答 1

-1

在viewDidLoad中,UI还没有布局,你应该将调整框架的代码移动到viewWillLayoutSubviews(确保你先调用超类实现)

于 2013-04-07T21:01:00.497 回答