【问题标题】:Set the thumbImage and watch the slider-bar disappear?设置 thumbImage 并观看滑块消失?
【发布时间】:2023-03-16 05:24:01
【问题描述】:
[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.

【问题讨论】:

    标签: iphone frameworks uiimage uislider


    【解决方案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或其他东西(用于左右轨道)和滑块将在您滑动时将其放大。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 2017-05-01
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多