2012-06-27 18 views
6

Chciałbym zrobić niestandardowy UISlider, coś takiegoJak zmienić rozmiar obrazu kciuka UISlider programowo

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

Numer thumbImage będzie mały przy minimalnej wartości, zwiększy rozmiar podczas zwiększania wartości suwaka, w przeciwnym razie zmniejszy się.

Czy ktoś wie, jak to zrobić?

Odpowiedz

10

Można użyć tego kodu:

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

zaczerpnięte z here.

Dodatkową pracą, którą będziesz mieć, będzie metoda A, która wywoła , gdy zmieni się wartość UISlider's.

+0

thx za odpowiedzi, dodałem z obserwacji, mam rację? Ale testuję z rozmiarem rozmiaru obrazu występuje ... współczynnik pływalności = 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]; jeśli (nadawca == penSize_sld) { brushWidth = penSize_sld.value; } – AndyYeung

+1

Jeśli chcesz dodać dodatkowe informacje, edytuj swój wpis i umieść tam ten kod ... – Peres

+0

Ta praca! Dzięki JackyBoy 'współczynnik pływalności = penSize_sld.value/(penSize_sld.maximumValue/2); jeśli (stosunek <0,8) { stosunek = 0,8; } UIImage * thumbImage = [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @ "drawview_dragbar_bu_1.png" ofType: nil]]; CGSize ss = CGSizeMake (współczynnik thumbImage.size.width *, współczynnik thumbImage.size.height *); UIImage * changeImage = [UIImage imageWithImage: thumbImage scaledToSize: ss]; [penSize_sld setThumbImage: changeImage forState: UIControlStateNormal]; ..... } – AndyYeung

2

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 
    } 
} 
Powiązane problemy