MoLice

Results 131 comments of MoLice

这个问题与 QMUINavigationBarScrollingAnimator 无关,只要某个界面设置了与配置表不一样的样式,就会在切换 App 时被 QMUIThemeManager 覆盖,与[这个 issue](https://github.com/Tencent/QMUI_iOS/issues/839#issuecomment-560263339) 相同。 iOS 13 增加了“Dark Mode”的系统主题,而当 App 进入到后台时,iOS 13 会让该 App 先切换到与当前主题不同的另一个主题(例如当前在 Light,则会切到 Dark)并对 App 截图,以保证待会你可能把系统切到另一个主题时,在多任务界面里能看到你的 App 已经是新的颜色,等到重新唤醒 App 时再重新设置一遍主题。因为这个特性,QMUITheme 也会在 App 进入后台、重新唤醒时,被重复切换主题,而当...

嗯,这时机问题属于业务自行考虑的,QMUI 不作处理。 请勿关闭 issue,待 QMUITheme 的问题解决后我会同步最新信息再关闭 issue。

> 你们的管理员用xcode跑了下没重现,然后打上can't reproduce标签就没管了 所谓的开源项目就是业余时间维护的意思,如果是全职维护,那我必须通过这个项目得到应有的资金报酬,但现在你正在免费使用它。所有开源项目都是这样,没有人会保证一定在几个小时、几天内就响应你的诉求,这通常取决于维护人员当时有没有空,或者你提供的信息是否足够完整。 而这一点,我觉得是你的问题而不是我的问题,在一开始处理这个 issue 的时候我已经完完全全按照你说的条件去尝试复现,但是没有复现,于是这个 issue 就打了无法复现的标记然后排到后面再处理了。你说需要真机调试,那为什么你不在一开始的 issue 里就清楚描述出来呢?等你后面再补充,我已经去处理别的事情了,**请明确我不是为你一个人服务的,你没有权力要求我在你需要的时间内解决完你的问题**。 > 这个感觉就是个kpi项目 如果你不放心,你可以不用这个框架,但请不要妄自下这种看起来很高高在上的评价,既然使用开源项目,就请尊重开源工作者的付出,否则你也可以选择不使用。 > 我提供了两个工程,用的控制变量法,即引入QMUI和不引入,一个崩一个不崩。 这是一个很好的习惯,正是因为你提供了 Demo,所以我才会那么快就响应你的 issue。但我使用你的 Demo 按照你当时的描述确实无法复现这个问题,这已经不是我的责任了吧? > 以前就有这种预感,大量hook系统的方法好不安全 所有的技术都有利有弊,如果有什么技术写出来的代码一定没有 bug,洗耳恭听。QMUI 所有的实现方案都是经过权衡取舍后的结果,你可以拒绝所有的 hook,但同时也请接受复杂且不便利的使用方式。你可以对某个具体的功能做出你的评判,提出你认为更好的方式,或者指出其中的哪些代码为什么不妥,这样能为你赢得尊重。但像这种泛泛而谈的评论,不好意思,说实话它一点实际意义都没有。

iOS 10 下 UIScrollView 也提供了 refreshControl 属性,可以代替。

或者可以关注 #442,我们在考虑将其父类修改为 UITableViewController

遇到这种问题请先用系统的控件测试,如果系统可以,则 QMUI 按道理也可以,如果系统可以但 QMUI 不可以,那就是 QMUI 的 bug,QMUI 的 bug 我们会优先处理,如果是系统本身就有这种限制,那 QMUI 是否要突破这个限制,会衡量后再决定,不会那么快。

在 iOS 11 及以后,如果 `UITableView.insetsContentViewsToSafeArea` 为 `YES`(默认即为 `YES`)的情况下,`QMUICellHeightCache` 组件无法拿到准确的 cell 内容宽度(一般指满屏宽减去左右两个 safeAreaInsets 的值),这个问题比较麻烦,后续看如何解决。

> 找到原因了,在Dark的配置表中有一行代码 > `QMUICMI.navBarBackgroundImage = nil;` > 此代码将所有导航栏的背景置为nil,此方法`-(UIImage *)navigationBarBackgroundImage`返回的`动态image`也就不存在了 主要的问题在于 QMUITheme 控件在主题发生变化时,一定都是以全局样式为准,于是会覆盖 vc 里自定义的样式,这个问题还在思考如何解决好一点,目前也确实只能用你说的方式,vc 自己再更新一次。

目前暂时没有这个计划,不排除后续会增加,毕竟这种交互需求还是比较常见的。

QMUITheme 发生变化时,它内置两种方式去更新样式: 1. 某些对象的某些属性是支持动态的,例如 `UIColor`、`UIImage` 类型,这种情况会在 `- [UIView(QMUITheme) qmui_themeDidChangeByManager:identifier:theme:]` 里按照 `QMUIThemePropertiesRegister` 提供的属性列表依次调用 setter,以触发外观的刷新。这种方式只支持属性,**不支持多参数的方法**(例如导航栏的背景图是通过 `- [UINavigationBar setBackgroundImage:forBarMetrics:]` 设置的,这个方法有两个参数,不支持这种方式,所以导航栏的背景图无法通过方法 1 来刷新),也**不支持非对象的类型**(例如 `UIBarStyle`)。 2. 如果有使用配置表,则在主题发生变化时,配置表也会重新加载,在 `QMUIConfiguration` 的某些属性的 setter (例如 issue 提到的 `setTabBarStyle:`)里会获取界面中的特定 View...