【发布时间】:2019-10-25 07:32:53
【问题描述】:
我有一个带有多个子视图的 UICollectionView 子类。单元格类包括一个方法,该方法应该导致单元格中的一个子视图(timerView)的动画。问题是,尽管 NSLog() 语句表明帧正在更改,但没有任何反应。子视图的框架没有变化。如何使 subView 的框架发生变化?
UIView *superView = self.timerView.superview;
//Force the border view to layout so we can get the size
[superView layoutIfNeeded];
NSLog(@"%@", NSStringFromCGRect(superView.frame));
self.timerView.frame = CGRectMake(0, 0, 0, superView.frame.size.height);
NSLog(@"%@", NSStringFromCGRect(self.timerView.frame));
[UIView animateWithDuration:duration animations:^{
self.timerView.frame = self.timerView.superview.frame;
} completion:^(BOOL finished) {
if (completion) {
completion();
}
}];
【问题讨论】:
-
你试过
reloadData吗?为什么不autolayout? -
我正在使用自动布局,但我需要对一个子视图的框架进行动画更改以响应用户交互
-
我没有使用 reloadData,因为它会用新的单元格替换单元格,而不是为更改设置动画
-
为什么不直接改变宽度约束?
-
正在动画的视图此时没有使用自动布局,因为操作框架是让它动画的一种简单方法。你认为这在没有改变框架的情况下会起作用吗?
标签: ios objective-c uicollectionviewcell