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

发布于 2024-11-14 08:12:22 字数 832 浏览 6 评论 0原文

我在 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,中间的值非常大(正值和负值......随机值) 。

有人可以帮我吗?谢谢。

I am facing some problem with UISlider programming.

1) style: I know we have to set the minimum and maximum images. I am just not sure what images and any image reference will be great ? I only want to change from blue to black !

2) also, my code for the UISlider is this :

in header file:

UISlider *slider;

in code file:

 //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);
}

The values that I get from the function are 0 at both ends and very large value in between (both positive and negative...random values).

Can anyone kindly help me out ? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦毁影碎の 2024-11-21 08:12:22

对于第 1 部分,要将滑块轨道的默认蓝色部分替换为黑色,您可以拍摄默认蓝色轨道的快照并将其转换为更深的灰度,如下所示(只需要左端和可拉伸部分的 1 个像素) :
在此处输入图像描述
并调用setMinimumTrackImage:forState:

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

对于第 2 部分,记录的值没有意义,因为 value 属性的类型为 float 并且您需要使用 %f 而不是%d (请参阅字符串格式说明符):

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

For part 1, to replace the default blue part of the slider track with black, you could take a snapshot of the default blue track and convert it to a darker grayscale like this (only need the left end and 1 pixel of the stretchable part):
enter image description here
and call setMinimumTrackImage:forState::

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

For part 2, the values logged don't make sense because the value property is of type float and you need to use %f instead of %d (see String Format Specifiers):

NSLog(@"val: %f",photoSlider.value);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文