2013-03-23 7 views
18

यह एक बहुत ही आसान समस्या होनी चाहिए लेकिन मुझे वांछित परिणाम प्राप्त करने में समस्या हो रही है। मैं क्षैतिज 320 की चौड़ाई के साथ स्क्रॉलिंग UIScrollView अपनी सामग्री की चौड़ाई 5000 है मैं के साथ सामग्री केंद्र के लिए कोशिश कर रहा हूँ: मुझे समझ नहीं आता क्यों इस सामग्री केंद्रित नहीं हैसामग्री के साथ UIScrollView में सामग्री को कैसे केंद्रित करेंऑफसेट

// 'self' is the UIScrollView 
CGFloat newContentOffsetX = (self.width/2) + (self.contentSize.width/2); 
self.contentOffset = CGPointMake(newContentOffsetX, 0); 

। क्या आप गणना के साथ कुछ गलत देख सकते हैं?

उत्तर

52

मुझे लगता है कि आप चाहते हैं:

CGFloat newContentOffsetX = (self.contentSize.width/2) - (self.bounds.size.width/2); 

चित्र: ग

CGFloat newContentOffsetX = (scrollView.contentSize.width - scrollView.frame.size.width)/2; 
scrollView.contentOffset = CGPointMake(newContentOffsetX, 0); 
+1

"self.width" भ्रम के बारे में क्षमा करें। यह एक शॉर्टकट है जिसे मैंने UIView catagory के साथ जोड़ा है। आप self.frame के बजाय self.bounds का उपयोग क्यों कर रहे हैं? – zakdances

+1

मुझे संदेह था कि 'self.width' समस्या नहीं थी-वास्तव में, यह है कि आप इसे' contentSize.width' से घटा देना चाहते हैं- लेकिन मैंने आदत से 'self.bounds' का उपयोग किया। 'self.bounds.size' और' self.frame.size' समान होना चाहिए; मैं 'self.bounds' का उपयोग करता हूं जब तक कि मुझे मूल-सापेक्ष-से-पर्यवेक्षण की आवश्यकता नहीं होती है जिसे मैं' self.frame.origin' के साथ प्राप्त करता हूं। – Isaac

11

उपयोग ScrollView

let centerOffsetX = (scrollView.contentSize.width - scrollView.frame.size.width)/2 
let centerOffsetY = (scrollView.contentSize.height - scrollView.frame.size.height)/2 
let centerPoint = CGPoint(x: centerOffsetX, y: centerOffsetY) 
scrollView.setContentOffset(centerPoint, animated: true) 
0

स्विफ्ट 4

स्क्रॉल:

कोड नीचे
|------------------------self.contentSize.width------------------------| 
         |-----self.width-----| 
|-------- offset --------| 
            ^center 
संबंधित मुद्दे