Closed RomanticEncounter closed 5 years ago
这个问题是因为 UISearchBar 系统默认的背景图命中了 UIImage (QMUI) 里对 resizableImageWithCapInsets 的检测,所以当你进入搜索时,QMUIConsole 会显示出来,而此时正在做搜索框的升起动画,于是 QMUIConsole 内部的 window.hidden = NO 也被以动画的形式展示出来,于是你会看到一个黑色半透明的东西从左上角展开,那其实是 QMUIConsole 里的 window,不是 UISearchController 的 dimmingView。
由于 QMUIConsole 只会在 Debug 下显示,所以这个问题不影响 Release 的包。内部版本我们已对此做了调整,你也可以将以下代码覆盖到本地的 QMUIConsole.m 中:
+ (void)show {
QMUIConsole *console = [QMUIConsole sharedInstance];
if (console.canShow) {
if (!console.consoleWindow.hidden) return;
// 在某些情况下 show 的时候刚好界面正在做动画,就可能会看到 consoleWindow 从左上角展开的过程(window 默认背景色是黑色的),所以这里做了一些小处理
// https://github.com/Tencent/QMUI_iOS/issues/743
[UIView performWithoutAnimation:^{
[console initConsoleWindowIfNeeded];
console.consoleWindow.alpha = 0;
console.consoleWindow.hidden = NO;
}];
[UIView animateWithDuration:.25 delay:.2 options:QMUIViewAnimationOptionsCurveOut animations:^{
console.consoleWindow.alpha = 1;
} completion:nil];
}
}
Bug 表现 使用
UISearchController
配合qmui_usedAsTableHeaderView
使用后,第一次点击searchbar蒙版动画的错误截图 Bug 现场的界面截图,或者 Xcode 控制台的错误信息截图,有问题的代码截图
如何重现 使用懒加载
预期的表现 正常应是若隐
其他信息