2017-07-06 7 views
5

क्या सेगमेंट नियंत्रण में निहित किसी विशिष्ट सेगमेंट की सामग्री को बदलने का कोई तरीका है? (मैं 180deg द्वारा यह बारी बारी से करने के लिए है)खंडित नियंत्रण में विशिष्ट सेगमेंट को बदलें

नहीं छवि, उसमें शामिल वहाँ एक (मैं FontAwesome का इस्तेमाल किया है) नहीं है मेरे मामले में, क्योंकि

प्रदर्शन:

से: original रहे हैं: rotated

उत्तर

1

एक सेगमेंट एक छोटा सा UIView है, आप बस इसमें एक परिवर्तन लागू कर सकते हैं। और

UISegmentedControl selected segment color

इस एक दूसरे को "घूर्णन" सामग्री के संदर्भ में:

subview करने के बारे में इस सवाल का संदर्भ लें।

How to rotate UIView using transform

फिर, मैं सिर्फ उतना ही आसान होगा इसके बजाय उसका उपयोग से बाहर एक छवि बनाने के लिए होगा।

+0

धन्यवाद @Pochi। हालांकि जब पूरे यूआईवीव को प्रतिबिंबित किया जा रहा है, तो कुछ अन्य गुणों को भी घुमाया गया है, जैसे कि गोलाकार सीमाएं। मैंने अब सवाल संपादित कर लिया है - UIView की सामग्री को फ़्लिप करने के लिए पूछना और UIView स्वयं नहीं। पीएस .: UIView में UILabel नहीं है। इसमें UISegmentLabel नामक एक चीज़ शामिल है। – Dorad

4

हां वहाँ है!

पर विचार करें कि हम एक सेगमेंट में बंटे नियंत्रण 3 अनुभाग हैं कि:

enter image description here

वास्तव में, यह एक दृश्य है जिसमें 3 subviews होता है, UISegment के रूप में आपके द्वारा लिखा गया है।

class ViewController: UIViewController { 
    // MARK:- IBOutlets 
    @IBOutlet weak var segmentedControl: UISegmentedControl! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     for view in segmentedControl.subviews { 
      print(view) 
     } 
    } 
} 

लॉग में कुछ इसी तरह प्रदर्शित करना चाहिए:: हम मुद्रित करने के लिए इस विभाजित नियंत्रण subviews (यह मानते हुए कि हम इसे के रूप में segmentedControl IBOutlet वांछित दृश्य नियंत्रक से जुड़ा) का प्रयास करें

UISegment: 0x7febebc06980; फ्रेम = (22 9 0; 114 2 9); परत = कैलियर: 0x60000002edc0 यूआईसेजमेंट: 0x7febebe140c0; फ्रेम = (114 0; 114 2 9); परत = कैलियर: 0x618000231800 यूआईसेजमेंट: 0x7febebe14d30; फ्रेम = (0 0; 113 2 9); परत = CALayer: 0x6180002319c0

तो, आप खंडों हिस्सों में बंटा हुआ नियंत्रण में एक UISegment के रूप में, का उपयोग इस प्रकार एक UIView के रूप में यह करने के लिए संपादित की जरूरत आवेदन कर सकते हैं। उदाहरण के लिए, यदि आप दूसरे खंड को घुमाने के लिए चाहते हैं, आप लागू कर सकते हैं:

UISegmentLabel:

override func viewDidLoad() { 
    super.viewDidLoad() 

    for view in segmentedControl.subviews[1].subviews { 
     print(view) 
     view.transform = CGAffineTransform(scaleX: -1, y: 1) 
    } 
} 

आप देख सकते हैं, खंड भी subviews है 0x7f8b51701770; फ्रेम = (0 0; 64 22।5); पाठ = 'दूसरा'; अपारदर्शी = नहीं; userInteractionEnabled = नहीं; परत = _UILabelLayer: 0x610000091530

UIImageView: 0x7f8b51701470; फ्रेम = (114 0; 1 1); अल्फा = 0; opaque = नहीं; autoresize = एलएम; userInteractionEnabled = नहीं; टैग = -1030; परत = CALayer: 0x610000031480

तो, आप इन subviews के सभी, कोड स्निपेट के ऊपर में लागू किया बारी बारी से करना चाहिए।

उत्पादन होगा:

enter image description here


एक ही दृष्टिकोण हिस्सों में बंटा हुआ नियंत्रण खिताब के बजाय छवियां हैं के साथ लागू किया जाना चाहिए:

घूर्णन से पहले:

enter image description here

,210

घुमाने के बाद:

enter image description here

+0

विस्तृत उत्तर के लिए धन्यवाद। हालांकि कुछ भी नहीं बदलता है ... – Dorad

+0

क्या आप समस्या का उल्लेख कर सकते हैं? क्या आपने उत्तर में वर्णित खंडित नियंत्रण के सबव्यूज़ को मुद्रित करने का प्रयास किया है? मुझे लगता है कि आपको कुछ याद आ सकता है ... –

+0

यह प्रिंटिंग वही है, लेकिन दृश्य बदल नहीं रहा है। – Dorad

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