UISlider 自定义图像和拇指高度?

Posted

技术标签:

【中文标题】UISlider 自定义图像和拇指高度?【英文标题】:UISlider custom images and thumb height? 【发布时间】:2012-04-25 08:26:45 【问题描述】:

我正在创建(或尝试)自定义 UISlider 外观,仍然是水平的,但要高得多。我有两个问题。

1.这是我用来将图像放到滑块上的代码。

UIImage *minImage = [UIImage imageNamed:@"sliderMin.png"];
UIImage *maxImage = [UIImage imageNamed:@"sliderMax.png"];
UIImage *thumbImage = [UIImage imageNamed:@"sliderThumb.png"];

minImage = [minImage stretchableImageWithLeftCapWidth:33.0 topCapHeight:0.0];
maxImage = [maxImage stretchableImageWithLeftCapWidth:33.0 topCapHeight:0.0];
// thumbImage = [minImage stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];

[_contrastSlider setMinimumTrackImage:minImage forState:UIControlStateNormal];
[_contrastSlider setMaximumTrackImage:maxImage forState:UIControlStateNormal];
[_contrastSlider setThumbImage:thumbImage forState:UIControlStateNormal];

minImage = nil;
maxImage = nil;
thumbImage = nil;

[_contrastSlider setMinimumValue:0.0];
[_contrastSlider setMaximumValue:100.00];
[_contrastSlider setValue:25.0];

我有三个图像,最小、最大和拇指。这些是图像以及它们在设备上的外观,这是不正确的。

我还不能发布图片,所以这里有一个link to MYSlider.jpeg,它显示了组件。

滑块在拇指右侧应为奶油色,左侧为粉红色。但这并没有发生。

这是问题1。问题2是拇指大小默认太小。我正在使用这个 :UISlider Height Hack 来尝试增加拇指的高度,但遗憾的是它使它变得更宽而不是更高。所以我正在寻求帮助以使该区域更高而不是更宽,并且想知道为什么我的粉红色图像被忽略了?

感谢您的帮助。

如果有帮助,这是我的 UISlider 子类 .m:

-(BOOL) pointInside:(CGPoint)point withEvent:(UIEvent*)event 
CGRect bounds = self.bounds;
bounds = CGRectInset(bounds, -10, -8);
return CGRectContainsPoint(bounds, point);

-(BOOL) beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event 
  CGRect bounds = self.bounds;
  float thumbPercent = (self.value - self.minimumValue) / (self.maximumValue - self.minimumValue);
  float thumbPos = THUMB_SIZE + (thumbPercent * (bounds.size.width - (2 * THUMB_SIZE)));
  CGPoint touchPoint = [touch locationInView:self];
  return (touchPoint.x >= (thumbPos - EFFECTIVE_THUMB_SIZE) && touchPoint.x <= (thumbPos + EFFECTIVE_THUMB_SIZE));

谢谢。

【问题讨论】:

组件图像的链接已损坏 【参考方案1】:

事实证明,在视图中设置我的滑块值确实加载方法导致了问题。我将它们设置在 Interface Builder 中,并且已修复。在 IB 中设置后,如果需要,我可以在代码中调整它们没有问题。

至于我的另一个问题,我想知道这是否是因为我没有在实际设备上进行测试,所以我将暂停这个问题,直到几周后我在设备上得到它。

【讨论】:

我现在正在设备上进行测试,触摸区域是原始滑块高度的问题仍然存在,所以我需要解决这个问题。但这不是主要问题,因为无论如何您都会自然地触摸滑块的中间部分。 我没有,但是当我与用户一起测试时,它从未被当作问题提出。 这适用于非视网膜设备吗?由于某种原因,高度没有变化。但在视网膜设备中都很好@mrEmpty 对我来说,它也适用于非视网膜。让我看看能不能把我的项目文件挖出来分享给大家。 现在一切都好。我不明白发生了什么,也许是一些我不知道的缓存。还是谢谢你!!

以上是关于UISlider 自定义图像和拇指高度?的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UI 滑块,拇指图像大小问题

自定义 UISlider 拇指图标:如何阻止拇指图标在拖动时恢复为默认圆形图标?

自定义 UISlider 外观

UISlider 的 minView 超出了它的边界和拇指的中心

在透明拇指图像后面隐藏 UISlider 轨道

调整 UISlider 拇指图像