जवाबों:
UIViewभाई-बहन उस क्रम में ढेर हो जाते हैं जिसमें उन्हें उनके पर्यवेक्षण के लिए जोड़ा जाता है। UIViewपदानुक्रम के तरीकों और गुण दृश्य आदेश का प्रबंधन करने के देखते हैं। UIView.h में:
@property(nonatomic,readonly) UIView *superview;
@property(nonatomic,readonly,copy) NSArray *subviews;
- (void)removeFromSuperview;
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;
- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2;
- (void)addSubview:(UIView *)view;
- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview;
- (void)bringSubviewToFront:(UIView *)view;
- (void)sendSubviewToBack:(UIView *)view;
साहसी दृश्य वापस subviewsसरणी में सामने करने का आदेश दिया जाता है । तो सबसे ऊपरी दृश्य होगा:
[parentView.subviews lastObject];
और नीचे का दृश्य होगा:
[parentView.subviews objectAtIndex:0];
जैसे कॉलिन क्रिविंकल ने कहा, [parentView bringSubviewToFront:view]दृश्य को शीर्ष पर लाएगा, लेकिन यह केवल मामला है अगर विचार पदानुक्रम में सभी भाई बहन हैं।
आप zPositionदृश्य के CALayerz-index को बदलने के लिए दृश्य की परत की संपत्ति का उपयोग कर सकते हैं (यह एक वस्तु है)।
theView.layer.zPosition = 1;
जैसा कि विक्टर नॉर्डलिंग ने कहा, "बड़े मूल्य शीर्ष पर हैं। आप नकारात्मक मूल्यों सहित किसी भी मूल्य का उपयोग कर सकते हैं।" डिफॉल्यू मूल्य शून्य है।
आपको परत तक पहुंचने के लिए क्वार्ट्जकोर ढांचे को आयात करने की आवश्यकता है। बस अपनी कार्यान्वयन फ़ाइल के शीर्ष पर कोड की इस पंक्ति को जोड़ें।
#import "QuartzCore/QuartzCore.h"
zPosition?
आईबी और स्विफ्ट
बहते हुए लेआउट को देखते हुए जहां पीला सुपरवाइव होता है और लाल, हरा और नीला, पीले रंग के उप-साक्षात्कार होते हैं,
लक्ष्य एक सबव्यू (हरे रंग का कहना है) को शीर्ष पर ले जाना है।
इंटरफ़ेस बिल्डर में आपको जो कुछ भी करने की ज़रूरत है उसे वह दृश्य खींचें जिसे आप दस्तावेज़ रूपरेखा में सूची के शीर्ष पर दिखाना चाहते हैं।
वैकल्पिक रूप से, आप दृश्य का चयन कर सकते हैं और फिर मेनू में संपादक> अरेंज> सेंड टू फ्रंट पर जाएं ।
इस कार्यक्रम को करने के लिए अलग-अलग तरीके हैं।
विधि 1
yellowView.bringSubviewToFront(greenView)
यह विधि ऊपर दिए गए आईबी उत्तर के प्रोग्रामेटिक समकक्ष है।
यह केवल तभी काम करता है जब साक्षात्कार एक-दूसरे के भाई-बहन हों।
उप-श्रेणियों की एक सरणी में निहित है yellowView.subviews। यहां, इंडेक्स से टू में bringSubviewToFrontले जाता है । इसके साथ मनाया जा सकता हैgreenView02
print(yellowView.subviews.indexOf(greenView))
विधि 2
greenView.layer.zPosition = 1
0अन्य सभी विचारों के लिए है, इसलिए परिणाम यह है कि जैसा greenViewदिखता है वह शीर्ष पर है। हालांकि, यह अभी सूचकांक पर बनी हुई है 0की yellowView.subviewsसरणी। यह कुछ अप्रत्याशित परिणाम पैदा कर सकता है, हालांकि, क्योंकि नल की घटनाओं जैसी चीजें अभी भी उच्चतम सूचकांक संख्या के साथ पहले दृश्य पर जाएंगी। उस कारण से, उपरोक्त विधि 1 के साथ जाना बेहतर हो सकता है।zPositionसुनिश्चित करने के लिए CGFloat.greatestFiniteMagnitude( CGFloat(FLT_MAX)स्विफ्ट के पुराने संस्करणों में) सेट किया जा सकता है कि यह शीर्ष पर है।[parentView bringSubviewToFront:view] ;
उस दृश्य के भीतर जिसे आप शीर्ष पर लाना चाहते हैं ... (स्विफ्ट में)
superview?.bringSubviewToFront(self)
यदि आप cocos2d का उपयोग कर रहे हैं, तो आप [parentView के साथ एक समस्या देख सकते हैं: ViewSubviewToFront: view], कम से कम यह मेरे लिए काम नहीं कर रहा था। जो दृश्य मैं सामने लाना चाहता था, उसे सामने लाने के बजाय, मैं अन्य विचारों को वापस भेजता हूं और इसने यह चाल चली।
[[[CCDirector sharedDirector] view] sendSubviewToBack:((UIButton *) button)];
हम ios में zPosition का उपयोग कर सकते हैं
अगर हमारे पास एक दृश्य है जिसका नाम SalonDetailView
उदाहरण है:@IBOutlet weak var salonDetailView: UIView!
और GMSMapView के लिए UIView
उदाहरण के लिए:@IBOutlet weak var mapViewUI: GMSMapView!
MapViewUI के ऊपरी भाग का सैलूनडेलटेल व्यू देखें
नीचे के रूप में zPosition का उपयोग करें
salonDetailView.layer.zPosition = 1