内部动画时的 UIScrollView 回调
Posted
技术标签:
【中文标题】内部动画时的 UIScrollView 回调【英文标题】:UIScrollView callbacks while animating internally 【发布时间】:2011-06-27 06:58:34 【问题描述】:我的 UIScrollView 有一个缩放的子视图(在 viewForZoomingInScrollView:scrollView 中返回)和许多其他子视图,它们注释缩放视图并且应始终以相对坐标定位在缩放视图的顶部
UIScrollView
- zoomChild (size 100x100 at scale 1)
- Annotate Child (size 10x10), always placed at relative position (0.2, 0.2) of zoomChild's frame
我继承了 UIScrollView 并覆盖了 scrollViewDidZoom:。我定位一个注释子像
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
self.annotateChild.frame = CGRectMake(0.2*100*self.zoomScale, 0.2*100*self.zoomScale, 10, 10);
只要用户正在与滚动视图交互,它就可以正常工作。 scrollViewDidZoom:/scrollViewDidScroll:,不过好像没有调用时
zoomBounce:scrollview 被捏得比 minZoom 小,用户松开手指,scrollview 动画回到 minScale。 scrollViewDidZoom:在动画完成时调用,而不是在动画期间调用。
使用 zoomToRect:animated: 缩放到矩形时。同样,在动画完成之前不会调用 scrollViewDidZoom:。
所以问题归结为:我怎样才能在 self.zoomScale 发生变化时得到通知,包括通过一些内部动画发生这种情况时?
或者,我可以将我的注释视图作为子视图添加到 zoomView 并以某种方式确保它们不被缩放吗?
【问题讨论】:
【参考方案1】:这是一个可能有效的答案:In ios 4.0, why does UIScrollView zoomToRect:animated: not trigger the scrollViewDidScroll or scrollViewDidZoom delegates while animating?
我需要和你一样做,但我还没来得及尝试。
【讨论】:
以上是关于内部动画时的 UIScrollView 回调的主要内容,如果未能解决你的问题,请参考以下文章
iOS - UICollectionViewCell 内的 UIScrollView - 内部视图的动画不正确(延迟)
更改 NSLayoutConstraint 时的 SWIFT 动画