我最近不得不在项目中打开故事板的自动布局。这影响了我希望不会的观点。我所描述的视图有许多UILabels
,它们根据视图中是否存在图像以编程方式定位。但是,现在我的程序化定位代码什么都不做,标签会保留在故事板中放置在视图中的位置。为了解决这个问题,我在viewDidLoad
尝试了一个动画,它没有做任何事情:
[UIView animateWithDuration:0.5 animations:^{
label1.frame = CGRectMake(10, baseY, 300, 50);
label2.frame = CGRectMake(10, baseY+35, 300, 50);
label3.frame = CGRectMake(10, baseY+60, 300, 50);
label4.frame = CGRectMake(10, baseY+85, 300, 50);
label5.frame = CGRectMake(10, baseY+110, 300, 50);
label6.frame = CGRectMake(10, baseY+135, 300, 50);
label7.frame = CGRectMake(10, baseY+180, 300, 175);
}];
我是否可以通过编程方式重新定位标签而不会干扰自动布局?
答案 0 :(得分:2)
您需要为约束而不是框架设置动画。如果你不这样做,那么自动布局会将视图重新定位在它们之前的位置;毕竟,这是它的工作。
(但viewDidLoad
中的动画没有意义;视图还没有在界面中,所以没有动画效果。)