UIControl.frame 属性的生命周期和有效性
Posted
技术标签:
【中文标题】UIControl.frame 属性的生命周期和有效性【英文标题】:Lifecycle and validity of UIControl.frame properties 【发布时间】:2013-07-18 22:22:53 【问题描述】:这让我有点烦。似乎没有可预测的模式来知道控件的框架属性何时保证有效。具体来说,我正在尝试根据硬件更改 UILabel 的框架位置。在viewDidLoad
和viewWillAppear
中,frame 属性为nil。如果我等到viewDidAppear
调整它,用户会看到它的标签移动,这很糟糕。
在过去的其他视图控制器上,我已经能够在较早的方法中获得标签的框架。是什么赋予了?我能做些什么来启动布局吗?
我应该提到,有问题的 UILabel 是使用 IB 和故事板添加的,这通常是我做 VC 的方式。
- (void)viewDidLoad
[super viewDidLoad];
-(void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
-(void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
【问题讨论】:
【参考方案1】:您可以尝试 viewDidLayoutSubviews -- 在 viewDidAppear 之前调用。或者,您可以使用约束而不是框架来调整位置,这可以在 viewDidLoad 中进行。
【讨论】:
以上是关于UIControl.frame 属性的生命周期和有效性的主要内容,如果未能解决你的问题,请参考以下文章