【发布时间】:2014-11-19 09:34:54
【问题描述】:
所以我在视图控制器(不是 UITableViewController)中有一个 UITableView,为了支持 iphone 6 和 6 Plus,我开始实现 Autolayout。现在一切工作顺利,问题是我在该 UITableView 的每个单元格内的 UIViews 上调整了动画大小,现在动画不会调整内部视图的大小,约束似乎会影响 UITableView 内的所有内容,即使我只想通过不同的设备保持 UITableView 居中...
我在 UITableView 上使用的约束是:
- 内容视图中的 X 中心对齐
- 垂直空间(到内容视图的顶部,固定值 = 114)
- 垂直间距(到内容视图的底部,固定值 = 0)
- UITableView 上的固定宽度 (320)
所以基本上,如果我们在 iphone 4-5s 上我们有一个使用屏幕完整宽度的 tableview,同时 iphone 6 和 6 Plus 有一个 320 固定宽度的居中 tableview。
这是我第一次使用 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 中的 UIView,此代码位于“cellForRowAtIndexPath”中。
如何阻止约束阻止我的视图调整大小? (因为我已经尝试在没有动画调用的情况下设置框架并且也没有工作)
或者我如何进行符合这些约束的动画调用?
谢谢!
【问题讨论】:
-
使用自动布局,您永远不会自己更改框架属性,因为这将被自动布局覆盖。您只需使用约束指定布局。
-
那么,AutoLayout 与动画不兼容?我有两个 UIView(彩色),我根据数据按比例对它们进行动画处理(这就是它们在 tableviewcell 中的原因,因为它们永远不会相同),因此用户可以以图形方式感知百分比(更好看)
-
约束以 UITableView 为目标,我尝试制作动画的 UIVIews 在 UITableViewCell 内(在 UITableView 内)
-
不,一点也不。您根本不必自己设置框架属性(和其他属性)。您必须使用约束(例如到容器的距离、宽度、高度)来表达您的布局。如果这样做,屏幕大小的更改将自动处理。 BTW 约束是对象,可以是 IBOutlets,因此您可以动态更改它们,例如在动画中。
-
好的,我还在尝试了解 AutoLayout 的技术...有没有办法获取和更改 UIView 而不是 IBOutlet 的约束?因为在“cellForRowAtIndexPath”中,我只处理使用方法 [cell viewWithTag:X] 访问它们的视图
标签: ios uitableview animation autolayout uiviewanimation