2010-05-26 6 views
8

मैं यूवीव के उप-वर्ग को ग्रेडिएंट प्रबंधित करने के बजाय हमारे ऐप में ग्रेडियेंट खींचने के लिए कैग्रेडेंटलेयर का उपयोग करने के साथ प्रयोग कर रहा हूं। एक स्नैफू जो मैंने पार किया है वह यह है कि जब दृश्य को मुख्य परत के एक उपनगर के रूप में ढाल दिया जाता है, तो उस डेटा को फिट करने के लिए आकार बदल जाता है जिसे मैं दिखाने की कोशिश कर रहा हूं, परत इसके साथ आकार बदलती नहीं है। मैं मूल फ्रेम आकार पर ढाल परत समाप्त होने का अंत करता हूं जबकि मेरा दृश्य का फ्रेम बहुत बड़ा होता है।मैं अपने सुपरलेयर के फ्रेम या उसके दृश्य के फ्रेम के आधार पर स्वचालित रूप से आकार बदलने के लिए परत का फ्रेम कैसे प्राप्त करूं?

क्या सुब्लेयर ऑटोरेसाइज़ को अपने सुपरलेयर के फ्रेम, या सुपरलेयर के दृश्य के फ्रेम को फिट करने का कोई तरीका है?

उत्तर

9

अपने दृश्य के उप-वर्ग में layoutSubviews लागू करें। जब फ्रेम का आकार बदलता है (या जब सेटNeedsLayout कहा जाता है) कहा जाता है। बस देखने के परिबंधों पर परत की अवधि सेट करें:

-(void)layoutSubviews 
{ 
    someSubview.frame = self.bounds; // make the subview frame match its view 
} 
+0

मैं एक उपवर्ग की जरूरत नहीं करने के लिए आशा करती हूं कि काम करेंगे, लेकिन कुछ कार्यक्षमता CALayers में मौजूद हो सकता है कि कि मैं ऐसा लगता है कि यह मेरे लिए ऐसा नहीं कर सकता है (हालांकि एक परत subclassing सवाल से बाहर नहीं है)। – Kevlar

+0

आप दृश्य का आकार बदल रहे हैं? मैं फ्रेम सेट करके विचारों का आकार बदलता हूं और परतों का आकार बदलना कभी नहीं था। – progrmr

+0

मैं कुछ मामलों में फ्रेम सेट कर रहा हूं, और दृश्य को दूसरों में ऑटोरेसाइज़ करने देता हूं। मुझे लगता है कि समस्या यह हो सकती है कि जब मैं मैन्युअल रूप से विचारों का आकार बदलता हूं तो मैं सबव्यूज़ के ऑटोरेसाइजिंग को बंद कर देता हूं ताकि सबव्यूज़ स्वयं का आकार बदल न सकें; यह मेरी समस्या हो सकती है। – Kevlar

2

यह और भी बेहतर

-(void)viewWillLayoutSubviews 
+1

क्या बेहतर है? और क्यों? कृपया पूरा उत्तर प्रदान करना सुनिश्चित करें। –

+0

इसमें बेहतर है कि यह वास्तव में यहां क्या होगा, मुझे लगता है। – GregJaskiewicz

+0

उस समय मैंने इस सवाल से पूछा, मुझे नहीं लगता कि UIViewController के पास यह तरीका था। मैं इस बात से सहमत हूं कि यदि आपके विचार एक Uiviewcontroller द्वारा प्रबंधित स्टॉक दृश्य हैं, तो आप UIView उपclass में लेआउट Subviews के बजाय ऐसा करना चाहते हैं। – Kevlar

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