动态修改约束没效果?也许是因为动作太快了!

修改/更新约束的值:

一般情况下是可以直接将约束拖线到试图控制器类中进行修改constant的值进行更新约束的操作的,但是有时会出现在对viewDidLoad中进行修改之后约束无效的情况,这是因为:

你在storyboard设置的约束是这样处理的——你在 viewDidLoad中修改的约束的代码块运行了,但是 运行完之后 又被 storyboard自己的配置给覆盖了,所以 你看到的还是你之前设置的约束!也就是说你执行的修改约束的操作被覆盖掉了,尽管这个过程很快。


动态修改约束没效果?也许是因为动作太快了!_第1张图片
别慌,等storyboard这个家伙先加载完

解决方案:

既然我们知道是因为修改约束的操作被覆盖了,那么我们就可以让这个操作稍微慢一些,让修改constant值或者约束的语句延迟执行即可!即使是0.1秒,也能让在storyboard初始完成之后你再修改相应的约束,这样就不会被覆盖掉了!


[self performSelector:@selector(modifyConstant) withObject:nil afterDelay:0.1];

- (void)modifyConstant {

self.top.constant+=100;

self.height.constant+=100;

}

PS:

这种情况只会出现在使用storyboard或者nib文件描述页面的情况下,纯代码党请自动忽略!

转载时请注明“来自-EvenZhu”

你可能感兴趣的:(动态修改约束没效果?也许是因为动作太快了!)