2011-11-04 12 views
11

मैं UISlider को अनुकूलित कर रहा हूं। मैं एक कस्टम अंगूठे की छवि सेट कर सकता हूं जो सामान्य अंगूठे से अधिक है, हालांकि उच्च न्यूनतम ट्रैक छवि सेट करते समय मैं ट्रैक को अधिक नहीं बना सका लेकिन ट्रैक ऊंचाई समान बना रही थी। यह संभव हो जाना चाहिए आइपॉड/संगीत अनुप्रयोग आईपैड पर के रूप में वॉल्यूम स्लाइडर सामान्य स्लाइडर आप यहाँ देख सकते हैं के रूप में के रूप में भी अधिक है:UISlider (ट्रैक छवि ऊंचाई) को अनुकूलित करें

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

उत्तर

2

उपयोग अगले तरीकों 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]; 

और बनाने के उपवर्ग इस

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

यह काम नहीं करता – user997128

+0

अजीब है, शायद मुझे समझ नहीं आता कि आप क्या करना चाहते हैं? – SAKrisT

+0

फिर से, यहां काम नहीं करता है। मैं अनुमान लगाया गया कोड आईओएस 5 केवल अनुमान लगा रहा हूं? (मैं आईओएस 4 का उपयोग कर रहा हूं, और यूआईएसएलआईडर के कुछ बिट्स हैं जो केवल आईओएस 5 हैं) – Adam

23

आप स्लाइडर उपवर्ग और trackRectForBounds: विधि ओवरराइड, इस तरह की जरूरत है:

- (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

उन है कि ट्रैक आकार बदलने के लिए कुछ काम कर कोड देखना चाहेंगे के लिए।

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() 
    } 
} 

केवल बात बाईं स्टोरीबोर्ड के अंदर वर्ग बदल रहा है:

storyboardstuff

आप जब तक आप कुछ और कस्टम जोड़ना चाहते हैं, ऑब्जेक्ट प्रकार UISlider करने के लिए अपने seekbar कार्रवाई और आउटलेट का उपयोग कर रख सकते हैं अपने स्लाइडर के लिए सामान।

5

स्विफ्ट के लिए सरल समाधान:

class TBSlider: UISlider { 

    override func trackRectForBounds(bounds: CGRect) -> CGRect { 
     return CGRectMake(0, 0, bounds.size.width, 4) 
    } 
} 
संबंधित मुद्दे