首先申明,代码是参考https://github.com/QiShare/QiSlider 改造而成
Github中这个代码其实在IOS 14上是有问题的,即使ISSUE下面几位高手的解释也不是很适用。经过我的实践,再加上我这边旋转的需求,改造如下:
头文件:
@interface SWSlider : UISlider
@property (nonatomic, strong) UIFont *textFont;
@property (nonatomic, strong) UIColor *textColor;
@property (nonatomic, copy) void(^valueChanged)(UISlider *);
@property (nonatomic, assign) CGFloat angle;
@end
这里的angle就是用来调整旋转后的效果的,因为一般来说,slider整体旋转后,最大值最小值以及当前值的标识应该保持水平。 angle的设置代码如下:
-(void)setAngle:(CGFloat)angle{
_angle = angle;
[self setTransform:CGAffineTransformMakeRotation(angle)];
}
然后slider设置angle来旋转,不用设置transform。
接下是对QISider的修改:
1)获取thumbView部分:
- (UIView *)thumbView {
if(@available(iOS 14.0, *)) {
if (!_thumbView) {
UIView *view = self.subviews[0];
if (view.subviews.count > 2) {
_thumbView = view.subviews[view.subviews.count - 1];
if([view.subviews[0] isKindOfClass:[UIImageView class]]) {
view.subviews<