2011-11-14 12 views
23

मैं अपने ऐप के लिए UISlider को अनुकूलित कर रहा हूं। मैं स्लाइडर लंबवत अभिविन्यास में होना चाहता हूं, लेकिन डिफ़ॉल्ट UISlider क्षैतिज अभिविन्यास में है। मुझे UISlider के अभिविन्यास को बदलने का तरीका नहीं मिला।यूआईस्लाइडर को वर्टिकल में कैसे बदलें?

मैं एक्सकोड में एक लंबवत स्लाइडर कैसे बना सकता हूं?

उत्तर

49

डिफ़ॉल्ट रूप से, एक यूआईएसलाइडर क्षैतिज (-) है। यदि आप इसे लंबवत बनाना चाहते हैं (|) तो आपको यह प्रोग्रामेटिक रूप से करना होगा, शायद CGAffineTransform के साथ। उदाहरण के लिए, आप viewDidLoad को यह टुकड़ा जोड़ सकते हैं या जहाँ भी आप उचित समझे:

CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI_2); 
slider.transform = trans; 
+0

हैलो आईटी का काम है लेकिन एक समस्या मैं ऊपरी भाग नीचे डाउन पार्ट चाहता हूं ऊपरी भाग –

+1

हार्डिक को समझता है, बस रोटेशन को उलट देता है। यानी 'CGAffineTransformMakeRotation (-M_PI_2) ' – izzy

2

मामले में आप प्रयोग कर रहे हैं ऑटो लेआउट:

अपने viewDidLoad में, आजमाएँ:

UIView *superView = self.sizeSlider.superview; 
[self.sizeSlider removeFromSuperview]; 
[self.sizeSlider removeConstraints:self.view.constraints]; 
self.sizeSlider.translatesAutoresizingMaskIntoConstraints = YES; 
self.sizeSlider.transform = CGAffineTransformMakeRotation(M_PI_2); 
[superView addSubview:self.sizeSlider]; 

यह करता है बाधाओं के साथ काम नहीं करते हैं, इसलिए चाल आपके यूस्लाइडर के लिए बाधाओं को दूर करना है। आपको अपनी फ्रेम प्रॉपर्टी सेट करके इसे मैन्युअल रूप से आकार बदलना पड़ सकता है।

1

मैं के साथ एक समस्या थी:

CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI_2); 
slider.transform = trans; 

क्योंकि मैं viewDidLoad विधि में कोड था। इसके बजाय, मैंने कोड को ViewDidAppear में रखा और यह ठीक काम किया।

संपादित करें: इसे ViewDidAppear में होना आवश्यक नहीं है, ViewDidLoad ठीक काम करता है (यहां तक ​​कि बेहतर)। आप स्वत: आकार बदल सकते हैं, या उस स्लाइडर के लिए बाधा सेट कर सकते हैं जिसे आप घूर्णन कर रहे हैं ताकि रोटेशन के बाद आकार बदल न जाए।

संबंधित मुद्दे