我正在构建一个需要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。我在屏幕截图中将拇指放在绿色中。
答案 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左侧和右侧的默认滑块颜色。