Tencent / QMUI_iOS

QMUI iOS——致力于提高项目 UI 开发效率的解决方案
http://qmuiteam.com/ios
Other
7.08k stars 1.38k forks source link

QMUISlider在iOS14下拿不到UIView(滑块) #1236

Closed WOHANGO closed 2 years ago

WOHANGO commented 3 years ago

Bug 表现 QMUISlider.m 中,这个方法对iOS14已经失效 image

预期的表现 可以拿到“thumbView”,暂无解决方法

其他信息

MoLice commented 3 years ago

原本这个方法就是预期可能返回 nil 的,QMUISliderdidAddSubview: 里做了保护,在 thumbView 真正被添加到界面上后,再更新一次它的样式。

但在 iOS 14 里,UISlider 的内部层级发生改变,subviews 不是直接加到 UISlider 里了,而是加到 _UISlideriOSVisualElement 内:

所以 QMUISlider 以前的 didAddSubview: 的保护逻辑就失效了。

鉴于 QMUISlider 的设计思路比较陈旧,因此后续将会重构它,这里暂不给出临时的解决方式。

xixisplit commented 3 years ago
    UIImageView *thumbView;
    UIView *_UISlideriOSVisualElement = slider.subviews.lastObject;
    if ([_UISlideriOSVisualElement isKindOfClass:UIImageView.class]) {
        thumbView = (UIImageView *)_UISlideriOSVisualElement;
    }else{
        thumbView = _UISlideriOSVisualElement.subviews.lastObject;
    }
MoLice commented 2 years ago

已发布 4.4.1 修复该问题。