Как программно изменить размер изображения большого пальца UISlider

Я хотел бы сделать пользовательский UISlider, примерно так

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

thumbImage будет маленьким при минимальном значении, он будет увеличивать размер при увеличении значения ползунка, в противном случае он уменьшится.

кто-нибудь знает как это сделать?


person AndyYeung    schedule 27.06.2012    source источник


Ответы (2)


Вы можете использовать этот код:

+ (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;
}

Взято из здесь.

Дополнительная работа, которая у вас будет, это метод A, который будет вызывать imageWithImage:scaledToSize: при изменении значения UISlider's.

person Rui Peres    schedule 27.06.2012
comment
спасибо за ответ, я добавил следующее, я прав? Но я тестирую с размером изображения проблемы ... float ratio = penSize_sld.value / (penSize_sld.maximumValue / 2); CGSize ss = CGSizeMake (penSize_sld.currentThumbImage.size.width ratio, penSize_sld.currentThumbImage.size.height ratio); UIImage * changeImage = [UIImage imageWithImage: penSize_sld.currentThumbImage scaledToSize: ss]; [penSize_sld setThumbImage: changeImage forState: UIControlStateNormal]; если (отправитель == penSize_sld) {brushWidth = penSize_sld.value; } - person AndyYeung; 27.06.2012
comment
Та работа! Спасибо, 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]; ..... } - person AndyYeung; 27.06.2012
comment
@Peres: Помогите мне: stackoverflow.com/questions/52987375/ - person Abhishek Thapliyal; 25.10.2018

Swift 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
    }
}
person Teodor Ciuraru    schedule 02.03.2017