如何在从UIViewControllerTransitioningDelegate旋转后跟踪UIView的位置?

时间:2015-10-08 15:04:30

标签: ios

我正在进行视图控制器转换(使用符合OHHTTPStubs的专用对象),其中所呈现的视图从呈现视图中的子视图缩小。当新视图被解除时,它会缩回到同一个子视图中。不是太难 - 但是当我在用户旋转他们的设备时(或者更糟糕的是,如果窗口因为新的iPad多任务处理而重新调整大小时)在呈现的视图上,我会感到难过。如何计算我想缩小的子视图的UIViewControllerTransitioningDelegate?我想我可能想在我的转换对象中保留对子视图的引用,但是当子视图本身在子视图中时有多大帮助? (没有整个视图层次结构,我无法用CGRect计算?)

作为参考,iOS9中的Apple Photos应用程序完全符合我的目标。点按缩略图中的照片即可查看其缩放至全屏。旋转设备,然后点击后退按钮,全屏照片缩小回缩小旋转视图所在的正确位置。

1 个答案:

答案 0 :(得分:0)

使用返回CGRect

的方法制作协议
@protocol ZoomingTransitionFromViewDelegate <NSObject>
-(CGRect)rectForZoomingTransition;
@end

使呈现视图控制器采用此协议,并在初始化期间将呈现视图控制器传递给UIViewControllerTransitioningDelegate。然后,呈现视图控制器的工作是计算视图的矩形。

在解雇期间,请确保在致电frame之前将toViewController的{​​{1}}设置为frame的{​​{1}},以便视图可以调整自身以适应任何旋转或窗口更改。