UIControl.frame 属性的生命周期和有效性

Posted

技术标签:

【中文标题】UIControl.frame 属性的生命周期和有效性【英文标题】:Lifecycle and validity of UIControl.frame properties 【发布时间】:2013-07-18 22:22:53 【问题描述】:

这让我有点烦。似乎没有可预测的模式来知道控件的框架属性何时保证有效。具体来说,我正在尝试根据硬件更改 UILabel 的框架位置。在viewDidLoadviewWillAppear 中,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 -- 在 vi​​ewDidAppear 之前调用。或者,您可以使用约束而不是框架来调整位置,这可以在 viewDidLoad 中进行。

【讨论】:

以上是关于UIControl.frame 属性的生命周期和有效性的主要内容,如果未能解决你的问题,请参考以下文章

vue的生命周期以及使用场景

spring bean的生命周期是怎样的,代码示例

iOS对UIViewController生命周期和属性方法的解析

Vue生命周期计算属性

Vue生命周期小结

Spring注解-生命周期与属性赋值