所以我在View Controller(不是UITableViewController)中有一个UITableView,并且支持iphone 6& 6 Plus我开始实施Autolayout。现在一切工作都很顺利,问题是我在UITableView的每个单元格内调整了UIViews的动画,现在动画没有调整内部视图的大小,约束似乎影响了UITableView内部的所有内容,即使我只是想让UITableView通过不同的设备居中......
我在UITableView上使用的约束是:
所以基本上,如果我们在iphone 4-5s上,我们有一个使用屏幕的完整宽度的桌面视图,同时iphone 6& 6 Plus的中心桌面视图为320固定宽度。
这是我第一次使用AutoLayout,所以我不知道这些约束如何影响UITableView单元格内部视图的动画,这就是我打电话的方式:
//before the call
barraActual.frame = CGRectMake(20, 24, 5, 30);
barraPromedio.frame = CGRectMake(295, 24, 5, 30);
//animate
[UIView animateWithDuration:1.5 animations:^{
barraActual.frame = CGRectMake(20, 24, periodoActual, 30);
barraPromedio.frame = CGRectMake(20+periodoActual, 24, periodoAnterior, 30);
}];
编辑:请注意,视图(barraActual& barraPromedio)是UITableViewCell中的UIViews,此代码位于“ cellForRowAtIndexPath ”内。
如何阻止约束阻止我的视图调整大小? (因为我已尝试在没有动画调用的情况下设置帧,但也没有工作)
或者如何制作符合这些约束条件的动画调用?
谢谢!
答案 0 :(得分:0)
感谢莱因哈德·曼纳(ReinhardMänner)指导我,对于那些可能会发现自己有同样误解的人:
使用AutoLayout时更改视图的框架将不起作用(使用或不使用动画)。要进行更改,您需要设置新约束或更改现有约束(最有可能以编程方式)。
我在Interface Builder中创建了新约束来管理我想要动画的视图,现在我的动画块看起来像这样:
//animate
[UIView animateWithDuration:1.5 animations:^{
((NSLayoutConstraint*)(barraActual.constraints[1])).constant = periodoActual;
((NSLayoutConstraint*)(barraPromedio.constraints[0])).constant = periodoAnterior;
}];
晚安:)