我的目标是为拇指图像创建一个更大的UISlider,高度为35像素。
我将UISlider子类化并添加了方法:
- (CGRect)trackRectForBounds:(CGRect)bounds
{
return CGRectMake(bounds.origin.x, bounds.origin.y, self.bounds.size.width, 50);
}
然后我使用setThumbImage从我的控制器设置thum图像:
我的大拇指很好地展示了。
我遇到的问题是跟踪区域在19 px高度附近仍然相同,如何将其扩展到50?
由于
吨。
答案 0 :(得分:31)
iPhone OS'UISlider控件的一个长期存在的问题是你不能让它更高。更具体地说,您可以通过为其拇指和轨道指定更高的图像使其看起来更高,但触摸区域保持为23px高。
Michael Patricios has published a way使默认滑块更容易触摸,并且该技术的变体可以处理更大的滑块。你需要做的是UISlider的子类,并在你的类中覆盖pointInside:
// How many extra touchable pixels you want above and below the 23px slider
#define SIZE_EXTENSION_Y 10
- (BOOL) pointInside:(CGPoint)point withEvent:(UIEvent*)event {
CGRect bounds = self.bounds;
bounds = CGRectInset(bounds, 0, SIZE_EXTENSION_Y);
return CGRectContainsPoint(bounds, point);
}
在Interface Builder中,设置滑块以使用新的UISlider子类,现在你有一个43xx可触摸高度的滑块。
答案 1 :(得分:11)
我正在使用此解决方案:)
CGRect sliderFrame = self.mySlider.frame;
sliderFrame.size.height = 142.0;
[self.mySlider setFrame:sliderFrame];
答案 2 :(得分:8)
通过增加UISlider框架的高度来增加UISlider拇指命中区域。这种方法避免了任何偏移和随后需要校正滑块框架。
- (void)viewDidLoad{
[super viewDidLoad];
//expand slider hit area
self.slider.frame = CGRectInset(self.slider.frame, 0, -10);
}
答案 3 :(得分:0)
我相信您可能需要查看thumbRectForBounds:trackRect:value: