动画 UIView 高于所有其他视图

Posted

技术标签:

【中文标题】动画 UIView 高于所有其他视图【英文标题】:Animate UIView above all other views 【发布时间】:2013-06-26 17:33:40 【问题描述】:

我想在我的应用的整个内容上方显示/动画一个 UIView。以下方法有效,但将所有内容附加到窗口并不是一个好主意。

[[[[UIApplication sharedApplication] delegate] window] addSubview:view]

什么是好的选择?

【问题讨论】:

创建一个单例 UIView 并将该实例放在每个 viewController 上可能是一种选择? 【参考方案1】:

我觉得你可以试试 visibleViewController 方法来获取顶部的 viewController

//Try this to get the top viewController
UIViewController *vc =  [app.rootViewController visibleViewController];

// After getting the top viewController, and then add your subview to it
[vc addSubView:view];
// and try bringing this view to the top
[vc bringSubViewTo....(fogot~):view];

看看有没有帮助:)

【讨论】:

【参考方案2】:

我认为这种方法是正确的,您确实需要将其附加到窗口,因为您可能不知道视图层次结构是什么。

您可以做一些整理代码的方法,就是将该逻辑封装到一些可通过AppDelegate 或其他方式访问的方法中:

- (void)addAlwaysVisibleView:(UIView *)topmostView;
- (void)removeAlwaysVisibleView;

AppDelegate 然后可以保持状态,并知道是否已经附加了“始终可见”的视图,以保持事物井然有序并在需要时进行一些大扫除。

【讨论】:

以上是关于动画 UIView 高于所有其他视图的主要内容,如果未能解决你的问题,请参考以下文章

AutoLayout:如何将 UIView 限制为不高于包含其所有子视图所需的高度?

UIView 高度约束动画,与其他视图有锚连接

仅可见视图动画

在另一个视图下动画 UIView

UIView animateWithDuration 动画块之外的动画自动布局视图

UIView 动画打破 TableView