2015-05-17 6 views
19
moviePlayer = MPMoviePlayerController(contentURL: url) 
moviePlayer.view.frame = CGRect(x: 0, y:{layoutguide.height}, width: 
self.view.frame.width, height: 300) 
self.view.addSubview(moviePlayer.view) 

व्यू कंट्रोलर के पास "topLayoutGuide" नामक एक विशेषता है, लेकिन ऐसा लगता है कि मैं नहीं चाहता था।शीर्ष LayoutGuide की ऊंचाई कैसे प्राप्त करें?

मैं जानता हूँ कि स्टोरीबोर्ड में लागू करने के लिए कैसे, कोड में, मैं शीर्ष लेआउट गाइड की ऊंचाई नहीं मिल सकता है। मैंने घंटों के लिए कुछ भी नहीं खोजा।

enter image description here

enter image description here

नीचे की तलाश है।

enter image description here

उत्तर

36

आप अपने length संपत्ति के रूप में topLayoutGuide मूल्य प्राप्त कर सकते हैं:

// Inside your viewController 
self.topLayoutGuide.length 

चूंकि यह एक एकल मान है (यानी: यह एक ऊंचाई और चौड़ाई नहीं है) वे सिर्फ यह कहा जाता length । नीचे LayoutGuide के लिए समान है।

आशा यह उल्लेख करना

एक और बात में मदद करता है, इस संपत्ति के लिए सेब दस्तावेज़ में: जब ऑटो लेआउट का उपयोग नहीं कर

// शिष्टाचार के नाते, इस मूल्य में उल्लेख करने के लिए सुरक्षित है -viewDidLayoutSubviews, या -layoutSubviews में सुपर

उपयोग बुला के बाद इन दोनों कार्यों में इस संपत्ति आप से, सही मूल्य मिल जाएगा के बाद से लेआउट प्रारंभ किया गया है। आप viewDidLoad समारोह में इसका इस्तेमाल करते हैं, तो इस संपत्ति हो जाएगा 0.

+0

जब आप इस मूल्य के लिए पूछते हैं तो ध्यान दें। बेशक बदलते समय यह बदल सकता है। –

+0

self.topLayoutGuide.length हमेशा 0.0 –

+0

आप इसके लिए कब पूछते हैं? शायद 'viewDidLoad' में आपको 0.0 प्राप्त होगा क्योंकि कोई लेआउट नहीं किया गया है। 'ViewDidAppear' पर आपको एक अलग मूल्य मिल सकता है। –

8

कोई कैसे SafeLayoutGuide के सन्निवेश वाली आईओएस 11 के लिए उपलब्ध की ऊंचाई की गणना करने के क्योंकि ऊपर और नीचे लेआउट गाइड अब पदावनत कर रहे हैं की तलाश में है, तो आप पा सकते हैं उस में:

view.safeAreaInsets 

सूचना ऊपर और नीचे लेआउट गाइड ViewController का एक हिस्सा थे कि, और अब SafeLayoutGuide ViewController का मुख्य दृश्य का एक हिस्सा है।

+0

शीर्ष और नीचे लेआउट मार्गदर्शिकाएं अभी भी ViewControllers का हिस्सा हैं। – CoderNinja

+1

@ कोडरनिंजा हाँ, मैंने नहीं कहा कि वे नहीं थे, मैंने कहा कि उन्हें आईओएस 11 में बहिष्कृत किया गया है। शायद मेरी आखिरी वाक्य भ्रमित थी इसलिए मैंने इसे संपादित किया। – Margaret

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