2014-09-29 5 views
8

आईओएस 6/7 में, मैं तो जैसे एक प्रभाव बनाने के लिए पृष्ठभूमि छवियों के साथ UISegmentedControl का इस्तेमाल किया है:आईओएस 8 में मेरे UISegmentControl सेगमेंट क्यों हाइलाइट कर रहे हैं जब मैंने सभी राज्यों के लिए पृष्ठभूमि छवियां सेट की हैं?

Customized UISegmentedControl

मैं बहुत की तरह, मानक राज्यों में से प्रत्येक के लिए UISegmentedControl के लिए पृष्ठभूमि छवि सेट करके ऐसा पूरा किया :

UIImage *segmentedControlBackgroundImage = [UIImage imageNamed:@"profileSegmentedControlBackground"]; 
UIImage *segmentedControlBackgroundSelectedImage = [UIImage imageNamed:@"profileSegmentedControlBackgroundSelected"]; 

[self.segmentedControl setBackgroundImage:segmentedControlBackgroundImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[self.segmentedControl setBackgroundImage:segmentedControlBackgroundImage forState:UIControlStateDisabled barMetrics:UIBarMetricsDefault]; 
[self.segmentedControl setBackgroundImage:segmentedControlBackgroundSelectedImage forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 
[self.segmentedControl setBackgroundImage:segmentedControlBackgroundSelectedImage forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 

एक खंड का चयन हो जाता है या पर प्रकाश डाला जाता है, तो इसे नीचे अच्छा नीली पट्टी है और मैं पाठ नीला होना पाठ रंग बदलने के लिए जिम्मेदार बताते हैं निर्धारित किया है। डिवाइडर के लिए कुछ अतिरिक्त कोड है, लेकिन मुझे लगता है कि यह असंबंधित है इसलिए मैंने इसे छोड़ दिया है।

मेरी समस्या यह है कि आईओएस 8 में, कुछ क्रियाएं होती हैं जो सेगमेंट की पृष्ठभूमि को भूरे रंग की बारी और खराब लगती हैं; एक जब आप अपना चयन बदलते हैं, तो आपके द्वारा टैप किए गए सेल को संक्रमण पूरा होने तक ग्रे बदल जाता है, और दूसरा यह है कि यदि आप पहले से चुने गए सेगमेंट को टैप करके रखते हैं, तो यह ग्रे हो जाता है। दोनों समान दिखते हैं और नीचे देखा जा सकता है।

UISegmentedControl with strange highlighting

संभवतः प्रासंगिक जानकारी के कुछ अतिरिक्त टुकड़े:

  • tintColor segmentedControl के लिए स्पष्ट है
  • मैं UISegmentedControl
  • उपवर्गीकरण नहीं कर रहा हूँ मैं के लिए किसी भी गुण नहीं बदला है UISegmentedControl इसकी उपस्थिति प्रॉक्सी
  • का उपयोग कर मैं 1 बिंदु चौड़ी छवियों का उपयोग कर रहा हूं ई पृष्ठभूमि छवियों और UISegmentedControl स्वचालित रूप से capInsets का निर्धारण करने और छवि
+0

मैं भी इस लग रहा होगा कि। क्या आपको कभी आपकी समस्या का समाधान मिला? – GraemeArthur

+0

नहीं। सबसे अच्छा मैं यह सुनिश्चित करना था कि टैब बदलने के बाद मुख्य धागे पर बहुत कम हुआ, इसलिए यह जितना संभव हो उतना कम समय के लिए विचित्र दिखाई दिया। – Acey

उत्तर

11

कारण खंड एक पहले से ही चयनित खंड का चयन करने पर ग्रे बदल जाता है, क्योंकि सेगमेंट में बंटे नियंत्रण राज्य के लिए चुने गए और एक ही समय में प्रकाश डाला याद आ रही है खपरैल का छत है।

अपने मामले बुला में:

[self.segmentedControl setBackgroundImage:segmentedControlBackgroundSelectedImage forState:UIControlStateSelected | UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 

कि इस समस्या को ठीक करना चाहिए।

जब आप अपने चयन को बदलने, सेल आप उपयोग किया जब तक संक्रमण पूर्ण

मैं पुन: पेश नहीं कर सका है कि एक ग्रे बदल जाता है, लेकिन शायद यह दोनों मुद्दों को ठीक होगा।

+0

महान ने ऐसा किया! और हाँ, यह दोनों समस्याओं को ठीक किया। सहायता के लिए धन्यवाद। क्या एक अजीब एपीआई है। मैं विभाजक छवियों को भी अनुकूलित कर रहा हूं, इसलिए यह उस अनुकूलन के लिए आवश्यक रेखाओं को लगभग दोगुना कर देगा। – Acey

+0

मेरे साथ कभी नहीं हुआ कि राज्यों को एक साथ मुखौटा बनाया जा सकता है। ऐप्पल डॉक्टर के लिए कुछ भी नहीं! – Brenden

6

शायद ज़रुरत पड़े, स्विफ्ट में

segmentedControl.setBackgroundImage(image, forState:[.Selected, .Highlighted], barMetrics:.Default)

+1

आपको धन्यवाद! लोग इस तरह की चीजें कैसे समझते हैं? डॉक्स कोई मदद नहीं है। – Brenden

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