【发布时间】:2017-03-16 22:36:10
【问题描述】:
在 Snapchat 应用中,当向下拖动表格视图以重新加载时,状态栏会更改 alpha。
状态栏 alpha 是如何变化的?框架是如何改变的?本来以为是快照,结果时钟按正常变化了。
【问题讨论】:
在 Snapchat 应用中,当向下拖动表格视图以重新加载时,状态栏会更改 alpha。
状态栏 alpha 是如何变化的?框架是如何改变的?本来以为是快照,结果时钟按正常变化了。
【问题讨论】:
这应该可以实现淡入淡出动画:
/* Swift 3 */
let statusBarWindow = UIApplication.shared.value(forKey: "statusBarWindow") as? UIWindow
UIView.animate(withDuration: 2) {
statusBarWindow?.alpha = 0.2
}
/* Objective-C */
UIWindow *statusBarWindow = (UIWindow *)[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"];
[UIView animateWithDuration:2.f
animations:^{ [statusBarWindow setAlpha:0.2]; }
completion:nil];
您还可以设置 statusBarWindow 的frame 并根据需要移动它。玩得开心;]
【讨论】:
他们很可能要么抓住状态栏所在的窗口并为其设置动画,要么他们在状态栏上方放置一个带有视图的窗口并为其设置动画。我没有要检查的应用程序,但它必须是这两种方法中的任何一种。要在状态栏上方放置一个窗口,我认为它是 window.windowLevel = UIWindowLevelStatusBar + 1 以便它位于您的状态栏上方。如果他们正在获取引用,您必须遍历应用程序窗口才能找到它,我从未尝试找到状态栏窗口,但我已经抓住了键盘窗口。如果时钟确实被拉下,那么它可能是获取状态栏所在的窗口和在上方添加一个窗口并为两者设置动画的组合。 Facebook 抓住键盘窗口在 Facebook Messenger 中向上滚动。希望对您有所帮助。
编辑: 我找到了获取状态栏窗口here 的示例。
另外我建议使用 CAAnimations 并避免真正改变任何东西。只需使用动画来呈现这种外观。
【讨论】: