2011-11-04 9 views
11

Dostosowuję numer UISlider. Mógłbym ustawić niestandardowy obraz kciuka, który jest wyższy niż zwykły kciuk, ale nie mogłem uczynić ścieżki wyżej podczas ustawiania wyższego minimalnego obrazu ścieżki, ale wysokość ścieżki pozostała taka sama. Powinno być możliwe, ponieważ w/Muzyka App iPod na iPada suwak głośności jest również wyższa jako zwykłego suwaka jak widać tutaj:Dostosuj UISlider (wysokość obrazu ścieżki)

http://blog.cocoia.com/wp-content/uploads/2010/01/Lol-wut.png

Odpowiedz

2

użytku kolejne metody setThumbImage, setMinimumTrackImage , setMaximumTrackImage

[self setThumbImage:[UIImage imageNamed:@"switchThumb.png"] forState:UIControlStateNormal]; 
    [self setMinimumTrackImage:[UIImage imageNamed:@"switchBlueBg.png"] forState:UIControlStateNormal]; 
    [self setMaximumTrackImage:[UIImage imageNamed:@"switchOffPlain.png"] forState:UIControlStateNormal]; 

i utworzyć podklasę jak ten

- (id) initWithFrame: (CGRect)rect{ 
    if ((self=[super initWithFrame:CGRectMake(rect.origin.x,rect.origin.y,90,27)])){ 
     [self awakeFromNib]; 
    } 
    return self; 
} 
+0

to nie działa – user997128

+0

dziwne, może ja nie rozumiem, co chcesz? – SAKrisT

+0

Ponownie, tutaj nie działa. Zgaduję, że dostarczony kod to tylko iOS5? (Używam iOS4 i jest kilka bitów UISlider, które są tylko iOS5) – Adam

23

Trzeba podklasy suwak i zastąpić metodę trackRectForBounds:, tak:

- (CGRect)trackRectForBounds:(CGRect)bounds 
{ 
    return bounds; 
} 
1
//use this code 

UIImage *volumeLeftTrackImage = [[UIImage imageNamed: @"video_payer_scroll_selection.png"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0]; 
     UIImage *volumeRightTrackImage= [[UIImage imageNamed: @"video_bar_bg.png"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0]; 
     [volumeslider setMinimumTrackImage: volumeLeftTrackImage forState: UIControlStateNormal]; 
     [volumeslider setMaximumTrackImage: volumeRightTrackImage forState: UIControlStateNormal]; 
     [volumeslider setThumbImage:[UIImage imageNamed:@"sound_bar_btn.png"] forState:UIControlStateNormal]; 
     [tempview addSubview:volumeslider]; 
2

dla tych, którzy chcieliby zobaczyć jakiś działający kod do zmiany rozmiaru utworu.

class CustomUISlider : UISlider 
{   
    override func trackRectForBounds(bounds: CGRect) -> CGRect { 
     //keeps original origin and width, changes height, you get the idea 
     let customBounds = CGRect(origin: bounds.origin, size: CGSize(width: bounds.size.width, height: 5.0)) 
     super.trackRectForBounds(customBounds) 
     return customBounds 
    } 

    //while we are here, why not change the image here as well? (bonus material) 
    override func awakeFromNib() { 
     self.setThumbImage(UIImage(named: "customThumb"), forState: .Normal) 
     super.awakeFromNib() 
    } 
} 

Tylko lewa rzeczą jest zmiana klasy wewnątrz ujęć:

storyboardstuff

można utrzymać za pomocą działań SeekBar i wylot do typu obiektu UISlider, jeśli nie chcesz, aby dodać trochę więcej zwyczaj rzeczy do twojego suwaka.

5

Najprostszym rozwiązaniem dla Swift:

class TBSlider: UISlider { 

    override func trackRectForBounds(bounds: CGRect) -> CGRect { 
     return CGRectMake(0, 0, bounds.size.width, 4) 
    } 
} 
Powiązane problemy