iOS利用UIView自定义播放器进度条

前段时间做项目遇到播放器自定义进度条的需求,刚开始想的是继承自系统的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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值