【发布时间】:2014-04-04 09:37:24
【问题描述】:
我用
[UIView beginAnimations:nil context:NULL];
为UIViewController 的框架设置动画。该视图控制器包含一个UITableView,而UITableView 的单元格是自定义子视图,它也具有自动调整大小的掩码集。
在为父视图控制器设置动画时,帧的变化也会导致该单元格内容的动画,这是预期的,但不是我想要的。我希望这些单元格立即设置它们的新框架,并且我希望整个视图控制器内容作为一个块移动(动画),而不是作为独立对象。
我不能专门为内部内容设置框架,因为这不是单一的视图控制器。有 7 个动画视图控制器(滑动动画)
PS:我不是在寻找视图控制器转换的替代组件,因为我正在做自定义动画。
有没有办法为特定 UIView 或 UIViewController 的自动调整大小操作停止动画?
更新
使用 transitionWithView 仍然会导致子视图通过自动调整大小进行动画处理。堆栈跟踪:
+[UIView(UIViewAnimationWithBlocks) transitionWithView:duration:options:animations:completion:] ()
+[UIView(UIViewAnimationWithBlocks) _setupAnimationWithDuration:delay:view:options:factory:animations:start:animationStateGenerator:completion:] ()
-[UIView(Geometry) _applyAutoresizingMaskWithOldSuperviewSize:] ()
-[UIView(Geometry) setFrame:] ()
【问题讨论】:
-
你能在动画结束前计算子视图帧的新值吗?
-
看看我更新的答案。
标签: ios objective-c uitableview uiview uiviewanimation