UISlider, 解决两边空隙, 交互区域不足问题
由于需要在播放器的设置里边创建一个slider 用来修改画面缩放比例, 发现当滑块滑动到两边的时候仍然存在一定的距离无法滑动到, 还有就是交互区域有点小, 滑块有时候会点击不到. 以下为解决方法
-(CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value
{
//修改滑块位置
rect.origin.x = rect.origin.x - 10 ;
rect.size.width = rect.size.width +20;
//修改交互区域
rect.origin.y = rect.origin.y - 10;
rect.size.height = rect.size.height + 20;
return CGRectInset ([super thumbRectForBounds:bounds trackRect:rect value:value], 10 , 10);
}
CGRect CGRectInset (
CGRect rect,
CGFloat dx,
CGFloat dy
);
该结构体的应用是以原rect为中心,再参考dx,dy,进行缩小或者放大.
UISlider还有这么几个方法可以重写
-(CGRect)trackRectForBounds:(CGRect)bounds
{
bounds.origin.x=15;
bounds.origin.y=bounds.size.height/3;
bounds.size.height=bounds.size.height/5;
bounds.size.width=bounds.size.width-30;
return bounds;
}
-(CGRect)minimumValueImageRectForBounds:(CGRect)bounds;
-(CGRect)maximumValueImageRectForBounds:(CGRect)bounds;