如何以编程方式更改 UISlider 拇指图像的大小

Posted

技术标签:

【中文标题】如何以编程方式更改 UISlider 拇指图像的大小【英文标题】:How to change size of thumb image of UISlider programmatically 【发布时间】:2012-06-27 08:12:56 【问题描述】:

我想做自定义 UISlider, 像这样的

|o----------| -> |-----O------| -> |------------〇|

thumbImage在最小值时会很小,在滑块值增加的过程中会增加大小,否则会减小。

有人知道怎么做吗?

【问题讨论】:

【参考方案1】:

您可以使用此代码:

+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize 
    //UIGraphicsBeginImageContext(newSize);
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext();
    return newImage;

取自here。

您将要做的额外工作将是一个方法A,当UISlider's 值发生变化时,该方法将调用imageWithImage:scaledToSize:

【讨论】:

感谢回复,我已经添加了以下内容,对吗?但我测试图像大小出现问题...浮动比率 = penSize_sld.value/(penSize_sld.maximumValue/2); CGSize ss= CGSizeMake(penSize_sld.currentThumbImage.size.widthratio, penSize_sld.currentThumbImage.size.heightratio); UIImage *changeImage = [UIImage imageWithImage:penSize_sld.currentThumbImage scaledToSize:ss]; [penSize_sld setThumbImage:changeImage forState:UIControlStateNormal]; if (sender == penSize_sld) BrushWidth = penSize_sld.value; 干得好!谢谢 JackyBoy float ratio = penSize_sld.value/( penSize_sld.maximumValue/2); if ( ratio < 0.8) ratio = 0.8; UIImage *thumbImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"drawview_dragbar_bu_1.png" ofType:nil]]; CGSize ss= CGSizeMake(thumbImage.size.width*ratio,thumbImage.size.height*ratio); UIImage *changeImage = [UIImage imageWithImage:thumbImage scaledToSize:ss]; [penSize_sld setThumbImage:changeImage forState:UIControlStateNormal]; ..... @Peres:帮帮我:***.com/questions/52987375/…【参考方案2】:

斯威夫特 3:

extension UIImage 

    func scaleToSize(newSize: CGSize) -> UIImage 
        UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0)
        draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))
        let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext();
        return newImage
    

【讨论】:

以上是关于如何以编程方式更改 UISlider 拇指图像的大小的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中更改 UISlider 拇指的大小

Objective C UISlider 仅更改最小轨迹图像

iOS 如何从 UISlider 中删除发光/阴影

调整 UISlider 拇指图像

自定义 UI 滑块,拇指图像大小问题

如何读取 UISlider 拇指图像的大小