【发布时间】:2014-12-10 17:16:44
【问题描述】:
在侧边栏菜单视图控制器(基于 SWRevealViewController)中,我使用两个表来模拟两列。因此,当用户单击具有子选项的选项时,另一个表视图控制器会加载它们。 (见图)
现在的问题是,并非第一个表中的所有选项实际上都有子选项。因此,我需要为第一个表(带有主选项的表)设置动画,以便在另一个表上没有要显示的子选项 时,它需要完整的超级视图宽度。只有单击具有子选项的选项才能为宽度设置动画,以便两列并排显示。 (见图片)
(左:预期行为,右:当前行为)
显示子选项和重新加载表格的逻辑已完成,并且运行良好。我唯一的问题是动画。为了设置表格宽度的动画,我想为单元格内的标签设置自动布局,如下所示:H:|-8-Label-8-|, V:|-8-Label-8-|,以及两个表格:H:|LeftTable(LeftTableWidth)-0-RightTable|,并为LeftTableWidth 约束创建一个出口。因此,当我需要为它们制作动画时,我会这样做:
[self.view layoutIfNeeded]; self.subTableWidthConstraint.constant = width; [UITableView animateWithDuration:0.45f animations:^{ [self.view layoutIfNeeded]; }];
现在表格宽度得到了正确的动画效果。但是,单元格内的标签不会从初始宽度值动画到最终值。相反,它们的新值会在约束发生更改的那一刻(在表格完成动画之前)立即设置。我什至尝试删除除以下内容之外的所有内容:
self.subTableWidthConstraint.constant = width;
他们仍然获得了新的价值观,甚至没有打电话给[self.view updateConstraints]。
所以...任何线索我做错了什么? 谢谢大家!
【问题讨论】:
标签: ios uitableview animation autolayout