2015-11-16 4 views
8

मैं नीचे दिए गए कोड का उपयोग कर अपने विचार का केंद्र प्राप्त करने की कोशिश कर रहा हूं, कक्षा का उपयोग DTIActivityIndicatorView से है जो दृश्य में एक कस्टम गतिविधि संकेतक जोड़ता है।दृश्य का केंद्र कैसे प्राप्त करें

var midX = CGRectGetMidX(self.view.bounds) 
var midY = CGRectGetMidY(self.view.bounds) 

let topStoriesActivityIndicator: DTIActivityIndicatorView = DTIActivityIndicatorView(frame: CGRect(x: midX, y: midY, width:80.0, height:80.0)) 

लेकिन ऊपर दिया गया कोड मुझे निम्नलिखित परिणाम दे रहा है जहां गतिविधि सूचक मध्य में केंद्रित नहीं है।

screenshot

उत्तर

8

स्विफ्ट 3

निम्नलिखित कोड स्क्रीन के केंद्र का प्रतिनिधित्व करते हैं:

let frameSize: CGPoint = CGPoint(x: UIScreen.main.bounds.size.width*0.5,y: UIScreen.main.bounds.size.height*0.5) 

आशा यह मदद!

+3

UIScreen.main.bounds.midX और UIScreen.main.bounds.midY भी स्विफ्ट 4 में काम करता है – uguboz

5

सीमा कैसे दृश्य के आकार का प्रतीत होता है की तुलना में अलग हो सकता है। फ्रेम का उपयोग करने का प्रयास करें और यदि यह काम नहीं करता है तो सीमाओं का उपयोग करने का प्रयास करें।

var midX = CGRectGetMidX(self.view.bounds) 
var midY = CGRectGetMidY(self.view.bounds) 

चूंकि आप केंद्र में अपना दृश्य पोजिशन कर रहे हैं और फिर चौड़ाई और ऊंचाई जोड़ रहे हैं, तो यह भी दिखाई देता है। आप इस

let topStoriesActivityIndicator: DTIActivityIndicatorView = DTIActivityIndicatorView(frame: CGRect(x: midX - 80.0, y: midY - 80.0, width:80.0, height:80.0)) 
+0

कि हो गया है और इसे पैदा करता है वही परिणाम देगा – Tunds

+0

अद्यतन जवाब –

+0

'bounds' सही संपत्ति यहाँ का उपयोग कर किया जा रहा है की जाँच करें; फ्रेम का मिडएक्स/वाई प्राप्त करने से गलत परिणाम उत्पन्न होगा यदि फ्रेम की उत्पत्ति गैर-शून्य है। –

1

की तरह फ्रेम स्थापित करना चाहिए इस प्रयास करें: -

var midY = self.view.frame.height/2 
var midX = self.view.frame.width/2 
2

स्विफ्ट 3:

let someRect: CGRect(x: 0, y: 0, width: 10, height: 10) 
let midX = someRect.midX 
let midY = someRect.midY 
संबंधित मुद्दे