7

我正在构建一个需要 MPVolumeView 来控制音量的应用程序。它在 iOS 5.1 之前完美运行,但自从 5.1 更新以来,拇指图像不再垂直居中。我尝试了一些方法,例如更改想象尺寸、调整视图(和滑块)的大小,但似乎没有任何效果,拇指不再垂直居中。我获得居中拇指的唯一方法是使用默认的 iOS 拇指。

我尝试将 UISlider 添加到具有精确的最小、最大和拇指图像的另一个视图中,并且该视图居中很好。

这是 MPVolumeView 的代码:

MPVolumeView *volumeView;
volumeView = [[[MPVolumeView alloc] initWithFrame:volumeViewHolder.bounds] autorelease];
[volumeViewHolder addSubview:volumeView];

UIView  *volumeViewSlider;
for (UIView *view in [volumeView subviews])
{
    if ([[[view class] description] isEqualToString:@"MPVolumeSlider"])
    {
        volumeViewSlider = view;
    }
}

[(UISlider *)volumeViewSlider setThumbImage:sliderHandleIcon forState:UIControlStateNormal];
    [(UISlider *)volumeViewSlider setMinimumTrackImage:leftTrackImage forState:UIControlStateNormal];
    [(UISlider *)volumeViewSlider setMaximumTrackImage:rightTrackImage forState:UIControlStateNormal];

volumeViewHolder 只是一个 153x33 的 UIView。我在屏幕截图中将拇指放在绿色中。 在此处输入图像描述

4

2 回答 2

4

也许更好的解决方案:

使用底部透明边框的更大图像。Retina Displays 应该在 10 像素左右。

于 2013-01-07T16:16:21.493 回答
0

我在一个项目中解决了同样的问题。必须使用 alpha = 0 设置左右部分的颜色 - 这意味着没有拇指的所有滑块都是透明的(没有它的可移动部分)。在我们必须为滑块线创建自定义视图之后,没有拇指。在这个视图中,任何颜色的部分都可以根据需要移动,上或下,左或右。它使用为您的场合定义的 y 获得:

UIView *v = [[UIView alloc] initWithFrame:CGRectMake(x,y,width, height)];

并将滑块添加到这一行作为子视图。结果视图将是滑块。例如:

UISlider *ourSlider  = ...; 
//initialise UISlider

ourSlider.minimumTrackTintColor = [UIColor colorWithRed:0 green:122.0f/255.0f blue:1 alpha:0];

ourSlider.minimumTrackTintColor = [UIColor colorWithRed:0 green:122.0f/255.0f blue:1 alpha:0];

UIView *lineOfSliderWithoutThumb = ... ;
// creation it

[lineOfSliderWithoutThumb addSubview:ourSlider];

//这行OfSliderWithoutThumb之后是我们自定义的uislider。注意:这里的颜色用作 UISlider 左右两侧的默认滑块颜色。

于 2015-02-13T22:37:14.753 回答