2015-09-09 2 views
8

मैं स्विफ्ट 1.2 और एक्सकोड 6.4 का उपयोग करके एक मूल स्केचिंग ऐप बना रहा हूं। जिस सुविधा पर मैं काम कर रहा हूं वह भविष्य में हेरफेर के लिए छवि में टेक्स्ट जोड़ रहा है।स्विफ्ट - अन्य दृश्य आइटमों के शीर्ष पर होने के लिए लेबल सेट करें

अभी तक मेरे पास लेबल है जो उपयोगकर्ता लेबल के माध्यम से ड्राइंग में जोड़ता है, लेकिन इसे UIImage के पीछे रखा गया है (मुझे लगता है) पर खींचा जाना है। यह संबंधित टैप इशारा को पहचानने से रोक रहा है। खींचे जाने पर लेबल भी अस्पष्ट हो जाता है।

मैं इसे खींचने से रोकने के लिए अन्य सभी चीज़ों के शीर्ष पर लेबल कैसे रखूं? अंतिम लक्ष्य उपयोगकर्ता को लेबल को स्थानांतरित करने की अनुमति देना है।

यदि मैं अपने सामान्य वेब स्टैक का उपयोग कर रहा था तो मैं तत्व के z-index को सीएसएस के माध्यम से उच्च मान पर सेट करता।

संपादित करें: view.bringSubviewToFront(label) का उपयोग करके टेक्स्ट को खींचा जाने से रोकता है, लेकिन टैप इशारा को उठाए जाने की अनुमति नहीं देता है।

यहाँ मेरा कोड:

func printText(){ 
     println(textString) 

     var label = UILabel(frame: CGRectMake(5, 100, 200, 50)) 
     label.textAlignment = NSTextAlignment.Center 
     label.text = textString; 

     let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap")) 
     label.addGestureRecognizer(tap) 

     self.view.addSubview(label); 
    } 

    func handleTap() { 
     print("tap working") 
    } 

किसी भी मदद की बहुत सराहना।

उत्तर

32

आप z- सूचकांक उपयोग करना चाहते हैं:

label.layer.zPosition = 1; 

इसके अलावा, आप जनक दृश्य पर bringToFront विधि के साथ खेल सकते हैं: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/

:

self.view.bringSubviewToFront(label); 

आपको लगता है कि समारोह यहाँ जाँच कर सकते हैं

इसके अलावा, आपको निम्न जोड़ना चाहिए:

छूने को सक्षम करने के लिए

+0

इन दोनों वापस करने के लिए छवि दृश्य भेज सकते हैं लेबल पर तैयार किए जाने से रोकने के लिए, लेकिन टैप इशारा अभी भी उठाया नहीं जा रहा है। – tonyedwardspz

+0

क्योंकि आप लेबल खो रहे हैं .userInteractionEnabled = true – Miknash

+1

बहुत बढ़िया। बहुत धन्यवाद। – tonyedwardspz

4

जनक दृश्य में उन लोगों के उपयोग का प्रयास करें:

view.bringSubviewToFront(label) 
view.sendSubviewToBack(imageView) 

यह सब आप, या क्या करना चाहते हैं कर सकते हैं क्या पर निर्भर करता है।

+0

यह लेबल को खींचा जाने से रोकता है (जो कि कमाल है), लेकिन टैप इशारा लेने की अनुमति नहीं देता है। – tonyedwardspz

+0

बीटीडब्ल्यू। यह वही जवाब है जो मैंने पेश किया था। – Miknash

+0

उत्तर के बीच केवल 5 मिनट का अंतर है, मैंने आपका जवाब नहीं देखा क्योंकि मैंने विंडो को रीफ्रेश नहीं किया था। साथ ही, आपने sendSubviewToBack का उल्लेख नहीं किया है, जो उपयोगी भी हो सकता है। – Rafal

2

आप

self.view.bringSubviewToFront(label) 

या

द्वारा सामने से लेबल कॉल कर सकते हैं

आप द्वारा

self.view.sendSubviewToBack(imageView) 
+0

यह लेबल को खींचा जाने से रोकता है, लेकिन टैफ जेस्चर को – tonyedwardspz

+0

को राफल और मेरे द्वारा प्रदान किए गए वही उत्तर को चुनने की अनुमति नहीं देता है। – Miknash

+0

क्षमा करें, लेकिन मैंने अभी प्रश्न की जांच की है, न कि दूसरों द्वारा प्रदान किए गए उत्तरों। –

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