2010-08-16 18 views
18

क्या कोई ऐसा व्यक्ति है जो मुझे सिखा सकता है कि क्षैतिज दिशा के बजाय ऊर्ध्वाधर दिशा में UISegmentedControl ऑब्जेक्ट को कैसे दिखाया जाए?क्या मैं ऊर्ध्वाधर में एक UISegmentedControl ऑब्जेक्ट दिखा सकता हूं?

उत्तर

20

बेन के उत्तर के लिए +1, हालांकि सेगमेंट नियंत्रण को घूर्णन करने से टेक्स्ट को अंदर घुमाया जाता है। कभी नहीं डरो! हम सिर्फ इतना की तरह अंदर लेबल को घुमाने के लिए, है:

NSArray *arr = [segmentedControl subviews]; 
    for (int i = 0; i < [arr count]; i++) { 
    UIView *v = (UIView*) [arr objectAtIndex:i]; 
    NSArray *subarr = [v subviews]; 
     for (int j = 0; j < [subarr count]; j++) { 
      if ([[subarr objectAtIndex:j] isKindOfClass:[UILabel class]]) { 
       UILabel *l = (UILabel*) [subarr objectAtIndex:j]; 
       l.transform = CGAffineTransformMakeRotation(- M_PI/2.0); //do the reverse of what Ben did 
      } 
     } 
    } 

स्विफ्ट 2 संस्करण:

for view in segmentedControl.subviews { 
    for subview in view.subviews { 
     if subview.isKindOfClass(UILabel) { 
      subview.transform = CGAffineTransformMakeRotation(CGFloat(-M_PI/2.0)) 
     } 
    } 
} 
+1

यह लेबल के लिए अच्छी तरह से काम करता है, लेकिन अगर आपके नियंत्रण में छवियां हैं, तो यह काम नहीं करती है। उस स्थिति में, मैं बेन के सुझाव का पालन करता हूं, और फिर अपने कोड में UIImageView को घुमाने की कोशिश करने के बजाय बस ओएसएक्स पूर्वावलोकन टूल (या फ़ोटोशॉप) में छवियों को घुमाता हूं। –

+1

यह कोड UISegmentedControl के आंतरिक (अनियंत्रित) कार्यान्वयन पर निर्भर करता है। जब भी ऐप्पल इस नियंत्रण के कार्यान्वयन को बदलता है तो विफलता की संभावना होती है। यहां तक ​​कि एक साधारण परिवर्तन जैसे UILabel उदाहरणों के बीच विचारों की एक अतिरिक्त परत को सम्मिलित करना और शीर्ष स्तर इस कोड को तोड़ देगा। – Arda

+0

@Arda यह तोड़ सकता है, लेकिन आपके स्वयं के सेगमेंट नियंत्रक का आविष्कार करने में लगभग 10 मिनट लगेंगे, जो कि मामला था, वही काम करता था, इसलिए इसे करें और इसका आनंद लें। संभावना से अधिक, अगर आप किसी भी तरह से बदल जाते हैं तो आप हमेशा ऐसा करने का एक तरीका ढूंढ पाएंगे। – Sethmr

4

यह नियंत्रण केवल क्षैतिज है। UISegementedControl प्रलेखन से:

एक UISegmentedControl वस्तु एक क्षैतिज कई क्षेत्रों, प्रत्येक खंड एक असतत बटन के रूप में कार्य के बने नियंत्रण है। एक खंडित नियंत्रण समूह को कई नियंत्रणों के समूह के लिए एक कॉम्पैक्ट माध्यम प्रदान करता है।

आपको इसे कस्टम नियंत्रण के रूप में करना होगा।

22

आप हमेशा सेगमेंट नियंत्रण पर परिवर्तन को संशोधित कर सकते हैं।

सेगमेंट किया गया नियंत्रक। ट्रांसफॉर्म = CGAffineTransformMakeRotation (M_PI/2.0);

+0

+1 :)। मैं घुमावदार खंडित नियंत्रण की उपयोगिता के बारे में सोचता हूं। – RedBlueThing

+0

हाँ, मैं इस पर निर्णय नहीं दे रहा था कि यह एक अच्छा विचार था या नहीं ;-) –

+0

@ बेन-गॉटलिब एक प्रशंसनीय गुणवत्ता :) – RedBlueThing

0

मैं कोको नियंत्रण में नीचे नियंत्रण जो अच्छा लग रहा है मिल गया। यह एक कस्टम नियंत्रण है और यूआईसींट्रोल के उप-वर्ग की तरह दिखता है।

smverticalsegmentedcontrol

लेकिन अगर आप मुझसे पूछते हैं, मैं, मैं एक स्तंभ चौड़ाई (44px) के साथ एक tabelview पैदा करेगा एक अलग दृष्टिकोण कोशिश करते हैं और कंटेनर में एक बच्चे के रूप में रखना और एक कोने को संरेखित हो सकता है कंटेनर के, कक्षों को कस्टमाइज़ करें और उस पर मेरी सूची रखें और प्रत्येक पंक्ति के टैप पर, अपनी सामग्रीदृश्य में विवरण दृश्य में संबंधित सामग्री लोड करें। कोशिश नहीं की, जल्द ही परिणाम कोशिश करेंगे और पोस्ट करेंगे। प्रश्न का उत्तर देने के लिए

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