自iOS 5.1以来,自定义MPVolumeView Thumb图像不是垂直居中的

时间:2012-06-27 16:05:21

标签: ios uislider ios5.1 mpvolumeview

我正在构建一个需要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。我在屏幕截图中将拇指放在绿色中。 enter image description here

2 个答案:

答案 0 :(得分:4)

也许是一个更好的解决方案:

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

答案 1 :(得分:0)

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

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];

//在此lineOfSliderWithoutThumb之后是我们的自定义uislider。 注意:颜色用作UISlider左侧和右侧的默认滑块颜色。