设置 thumbImage 并观看滑块消失?

Posted

技术标签:

【中文标题】设置 thumbImage 并观看滑块消失?【英文标题】:Set the thumbImage and watch the slider-bar disappear? 【发布时间】:2010-06-14 16:09:17 【问题描述】:
[sld1 setThumbImage:[UIImage imageNamed:@"Blue.png"] forState:UIControlStateHighlighted];
[sld1 setThumbImage:[UIImage imageNamed:@"Blue.png"] forState:UIControlStateNormal     ];

这会导致滑动条图像消失吗?我的都没有了。 (缩略图显示得很好。)

Apple 的文档听起来我可以使用上述 2 行代码中的任何 ONE。 (但我想我真的需要两者。)

而且我找不到任何关于“你必须始终做到所有 4 项”的信息:

Set the normal-state image.
Set the highlighted-state image.
Set the setMinimumTrackImage.
Set the setMaximumTrackImage.

【问题讨论】:

【参考方案1】:

如果你开始用图形自定义 UISlider,你必须设置至少 3 个图形。 左右侧的轨迹栏和缩略图:

这是我上次使用 UISlider 时的做法:

    CGRect frame = CGRectMake(20.0f, 6.0, 280.0f, 20.0f);
    UISlider *customSlider = [[UISlider alloc] initWithFrame:frame];
    [customSlider addTarget:self action:@selector(sliderMove:) forControlEvents:UIControlEventValueChanged];
    [customSlider addTarget:self action:@selector(sliderStart:) forControlEvents:UIControlEventTouchDown];
    [customSlider addTarget:self action:@selector(sliderEnd:) forControlEvents:UIControlEventTouchUpInside];        
    [customSlider addTarget:self action:@selector(sliderEnd:) forControlEvents:UIControlEventTouchUpOutside];   

    // in case the parent view draws with a custom color or gradient, use a transparent color
    customSlider.backgroundColor = [UIColor clearColor];    
    UIImage *stetchLeftTrack = [[UIImage imageNamed:@"slider.png"]
                                stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];

     UIImage *stetchRightTrack = [[UIImage imageNamed:@"slider_right.png"]
                                stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];

    [customSlider setThumbImage: [UIImage imageNamed:@"slider-knop.png"] forState:UIControlStateNormal];
    [customSlider setMinimumTrackImage:stetchLeftTrack forState:UIControlStateNormal];
    [customSlider setMaximumTrackImage:stetchRightTrack forState:UIControlStateNormal];

从我的角度来看,UISlider 或任何其他状态的突出显示状态是没有意义的,您的手指可能会覆盖拇指图像,因此用户将永远看不到它。 我不确定它只是从 UIButton 扩展而来,也许它无法处理它?

【讨论】:

“必须修改至少 3 张图像”:如果您使用 IB 或 Code 制作滑块,似乎效果会有所不同。 (我要如何保持这一切正常???) “改变高亮状态没有意义”:当我滑动它时,我从不将拇指放在 thumbImage 上。没有必要。它仍然有效。所以我从不希望我的图像突然变回其他图形,因为我忘记设置 highligted 状态。 你从哪里得到你的“slider_right and left png”图像?有没有办法找到/加载/使用已经内置到框架中的图像? (万一Apple将来更改它们。)或者我必须去屏幕捕获现有的......只是为了保存它们......并将它们包含在我的捆绑包中......然后重新加载它们? (呃,真是浪费时间。) 1.我不知道IB,但是如果我尝试只设置正确的轨道,左侧不会使用默认值,它只是空的。 2.我知道的唯一情况是 iPod 应用程序中的时间线,除非在拇指图像上,否则您不能移动其他滑块(在我设置的不同 UIControllEvents 中控制。即让它响应 dragOutside。3. 如果您根本不自定义它将默认为Apples设计。我参考的图像是我自己绘制的。(它是一个带有方形拇指的绿色滑块)只需绘制36x9或其他东西(用于左右轨道)和滑块将在您滑动时将其放大。

以上是关于设置 thumbImage 并观看滑块消失?的主要内容,如果未能解决你的问题,请参考以下文章

更改 UISlider thumbImage 的大小

屏蔽背景图像

爱奇艺视频弹幕是在哪里设置的

IOS - 当滑块值改变时设置 UILabel Swift

Vue.js 范围滑块,设置 v-model 并获取更改

Vue.js范围滑块,设置v模型并获得更改