【问题标题】:UIView respond to orientation change after animationUIView 在动画后响应方向变化
【发布时间】:2017-02-01 17:49:41
【问题描述】:

我怎样才能让我的 UIView(它无法访问 ViewController)执行一些任务方向改变发生后?也就是说,在动画完全完成并且帧不再因动画而变化之前,不应执行任何任务。

我尝试在 UIView 上注册一个观察者以响应 UIDeviceOrientationDidChangeNotifications,但是我在处理程序中放置的断点在动画开始之前被触发了。

【问题讨论】:

    标签: ios swift uiview rotation orientation


    【解决方案1】:

    您需要让视图控制器参与进来。只有视图控制器可以获得对转换协调器的引用,以便它可以调用animate(alongsideTransition:completion:) 并在完成处理程序中做一些事情。那是动画完成的时刻。

    因此视图控制器可以直接与视图对话,或者,如果您希望视图完全不可知,视图控制器可以发布视图已注册的自定义通知。

    【讨论】:

    • 但是,您可能应该重新考虑这一点。 UIView 是视图。很可能,无论您在做什么,视图控制器都应该负责整个事情。如果您正在布局,视图控制器可以在旋转开始之前进行设置,并且更改将与旋转一起动画,这非常酷。如果您要更改某些内容,那是控制器作业,而不是视图作业。
    • 嗨,马特,感谢您的建议。我怀疑获取对视图控制器的引用将是唯一的解决方案。基本上我正在为视频播放器开发一个库,所以我们不一定可以在库级别访问视图控制器,但我可以设置一个公共 API 来传递对视图控制器的引用。我需要做的是根据方向变化重新调整视图中的自定义标题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 2021-02-21
    相关资源
    最近更新 更多