UISlider的问题:打印滑块的值并改变样式

时间:2011-06-04 00:13:00

标签: ios uislider

我在使用UISlider编程时遇到了一些问题。

1)风格:我知道我们必须设置最小和最大图像。我只是不确定什么图像和任何图像参考将是伟大的?我只想从蓝色变为黑色!

2)另外,我的UISlider代码是这样的:

头文件中的

UISlider *slider;
代码文件中的

 //slider
 CGRect frame=CGRectMake(10, 70, 300, 10);
 photoSlider=[[UISlider alloc] initWithFrame:frame];
 photoSlider.minimumValue=0.0;
 photoSlider.maximumValue=90.0; //maximumPhotoImage
 photoSlider.continuous=NO;
 photoSlider.value=10.0;
 photoSlider.backgroundColor=[UIColor clearColor];
 //photoSlider

 [photoSlider addTarget:self action:@selector(updateImage:)   forControlEvents:UIControlEventValueChanged];
 [self.view addSubview:photoSlider];

- (void) updateImage:(id) sender  
{
   NSLog(@"val: %d",photoSlider.value);
}

我从函数得到的值在两端都是0而在它们之间的值非常大(正负...随机值)。

有人可以帮助我吗?感谢。

1 个答案:

答案 0 :(得分:2)

对于第1部分,要用黑色替换滑块轨道的默认蓝色部分,您可以拍摄默认蓝色轨道的快照并将其转换为这样的较暗灰度(仅需要左端和1个像素)可伸缩的部分):
enter image description here
并致电setMinimumTrackImage:forState:

UIImage *minTrackImg = [[UIImage imageNamed:@"MinimumTrackImage.png"] 
    stretchableImageWithLeftCapWidth:4 topCapHeight:0];
[photoSlider setMinimumTrackImage:minTrackImg forState:UIControlStateNormal];


对于第2部分,记录的值没有意义,因为value属性的类型为float,您需要使用%f而不是%d(请参阅{{3 }}):

NSLog(@"val: %f",photoSlider.value);