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