修改/更新约束的值:
一般情况下是可以直接将约束拖线到试图控制器类中进行修改constant的值进行更新约束的操作的,但是有时会出现在对viewDidLoad中进行修改之后约束无效的情况,这是因为:
你在storyboard设置的约束是这样处理的——你在 viewDidLoad中修改的约束的代码块运行了,但是 运行完之后 又被 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”