前段时间做项目遇到播放器自定义进度条的需求,刚开始想的是继承自系统的UISlider去做,内部重写系统方法完成样式定制。后来遇到头疼的问题,在iphone6、7手机上样式显示正常,遇到plus手机进度条样式显示有问题,缓存进度跟最底部的进度高度不匹配,有偏移,调了很多次,都以徒劳告终,后来没办法,自己自定义了一套进度条的实现方案,配合iOS自有手势操作,完成基本功能操作。下面介绍下自定义实现类:
这块功能主要涉及到两个类文件,ZTCSlider,ZTCProgressView:
一、ZTCSlider类,负责进度条交互操作、进度条变化
ZTCSlider.h,介绍初始化方法,及相关操作回调,返回进度值;播放进度、缓存进度可通过外部调用setter方法传入
#import <UIKit/UIKit.h>
/**
获取滑动进度回调
@param value 滑动进度
*/
typedef void (^MGBroadcastGetSlideValueHandler)(CGFloat value);
/**
开始拖动进度块回调
*/
typedef void (^MGBroadcastSliderPanBeginHandler)(void);
/**
结束拖动进度块回调
@param value 进度值
*/
typedef void (^MGBroadcastSliderPanEndHandler)(CGFloat value);
/**
点击进度条某一部分
@param value 进度值
*/
typedef void (^MGBroadcastSliderTapSliderHandler)(CGFloat value);
@interface ZTCSlider : UIView
/**
滑条初始化方法
@param sliderWidth 滑块宽度
@param sliderColor 滑块颜色
@param progressHeight 进度条高度
@param progressBgColor 进度套背景色
@param progressPlayedColor 进度条播放后的颜色
@param progressCachedColor 进度条缓存的颜色
@param isShowCorner 是否设置进度条圆角效果
*/
- (instancetype)initWithSliderWidth:(CGFloat)sliderWidth
sliderColor:(UIColor *)sliderColor
progressHeight:(CGFloat)progressHeight
progressBgColor:(UIColor *)progressBgColor
progressPlayedColor:(UIColor *)progressPlayedColor
progressCachedColor:(UIColor *)progressCachedColor
showCorner:(BOOL)isShowCorner;
///播放值
@property (nonatomic, assign) CGFloat slideValue;
///缓存值
@property (nonatomic, assign) CGFloat cacheValue;
/**
开始拖动的操作
*/
@property (nonatomic, copy) MGBroadcastSliderPanBeginHandler panBeginHandler;
/**
结束拖动的操作
*/
@property (nonatomic, copy) MGBroadcastSliderPanEndHandler panEndHandler;
/**
获取进度值
*/
@property (nonatomic, copy) MGBroadcastGetSlideValueHandler getSlideValueHandler;
/**
点击进度条某个部分的操作
*/
@property (nonatomic, copy) MGBroadcastSliderTapSliderHandler tapSliderHandler;
@end
ZTCSlider.m
#import "ZTCSlider.h"
#import "ZTCProgressView.h"
@interface ZTCSlider()
///滑块
@property (nonatomic, strong) UIView *sliderView;
///h进度条
@property (nonatomic, strong) ZTCProgressView *progressView;
@property (nonatomic, strong) UIPanGestureRecognizer *panGesture;
@property (nonatomic, strong

最低0.47元/天 解锁文章
682

被折叠的 条评论
为什么被折叠?



