从情节提要设置约束后如何立即修改约束?
Posted
技术标签:
【中文标题】从情节提要设置约束后如何立即修改约束?【英文标题】:How to modify constraints right after they are set from storyboard? 【发布时间】:2015-01-29 07:58:47 【问题描述】:我需要知道如何在从情节提要或 nib 加载约束后修改它们。
例如,在故事板中,我横向放置了 5 个视图。在代码中,当视图控制器加载数据时,此视图的位置基于数据。那么有没有可以添加到控制器的方法?我认为 awakeFromNib 会起作用,但事实并非如此。或者也许我用错了。
谢谢你帮助我。
【问题讨论】:
【参考方案1】:我以为是这个地方:initWithCoder
或者
数据进来后可以调用:
[self setNeedsUpdateConstraints];
然后你需要实现
- ( void ) updateConstraints
但您也可以只在代码中创建所有约束,然后只添加特定数据所需的约束。
我要做的是:(可能是代码拼写错误,但输入的是 xCode 补全;))
@interface ...
@property (assign, nonatomic) BOOL update;
@end
- ( void ) whatever
_update = YES;
[self setNeedsUpdateConstraints];
- ( void ) updateConstraints
[super updateConstraints];
if( _update )
_update = NO;
....CONSTRAINTS...
【讨论】:
Init with coder 是在 Storyboard 中创建的视图的指定初始化程序。 (对于删除评论的人) initWithCoder 不行,我已经试过了。有一个方法layoutSubviews,但是这个一直被调用,我只需要第一次修改。 你不应该使用 layoutSubviews 而是使用我的第二种方式。 updateConstraints 是为您的问题而设计的。这样做一次,只需用 if 保护它。 if 语句是什么意思?所以我创建了一个类似于 initialUpdate 的 bool,它会在 updateConstraints 方法中告诉我,当这个 bool 为 YES 时,它应该更新,否则不应该更新。 更新答案@KlemenZagar 因为您只想在获得数据后进行约束(异步?)并且可以多次调用 updateConstraints以上是关于从情节提要设置约束后如何立即修改约束?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用情节提要在 Tableview Cell 中为 2 个标签和一个图像视图设置约束?