自定义UISlider的一些处理

网上有很多关于自定义UISlider的文章,但是很多代码的兼容性都很差,尤其是在重写:trackRectForBounds和thumbRectForBounds这两个方法的重写,下面说一下如何在自定义时:

1.如何设置滑道的高度?

2.如何解决自定义滑块图片以后解决滑块两端出现无法滚动到最左边、最后边的问题,或者滑块滑动到最左边、最后边都出现被盖住的问题。

代码如下:

-(CGRect)trackRectForBounds:(CGRect)bounds
{
    //修改滑动条的高度
    bounds.size.height=self.progressHeight;
    self.layer.cornerRadius = self.progressHeight/2;
    bounds.origin.y = (self.frame.size.height-bounds.size.height)/2;
    return bounds;
}

- (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value
{
    //调整滑块范围
    CGFloat size = self.currentThumbImage.size.width/kScale;
    //滑动按钮一半的宽度
    CGFloat halfWidth = size/2;
    rect.origin.x += halfWidth;
    rect.size.width -= halfWidth*2;
    bounds = [super thumbRectForBounds:bounds trackRect:rect value:value];
    return CGRectInset(bounds, halfWidth, halfWidth);
}

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
    if (self.isLimitSlide) {
        //拦截滑动处理
        return NO;
    }else{
        return YES;
    }
}

网络上绝大部分资料在重写thumbRectForBounds时,都是固定一个值来调整滑块的位置,这里是通过滑块的宽度,自动调节左间距,所以通用性比较强。kScale是当前屏幕的scale。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值