2011-09-12 4 views
9

मैं यहां कुछ सुंदर मूल करने की कोशिश कर रहा हूं। मैं मौजूदा दृश्य के केंद्र में वर्तमान में स्क्रीन से बाहर होने वाले सबव्यूव को लाने के लिए ब्लॉक-आधारित UIView एनीमेशन का उपयोग कर रहा हूं। स्पष्ट रूप से sp.view.frame = self.view.center लाइन यहां समस्या है। अंत में, मैं क्या कर सकता हूं जो मैं चाहता हूं?view.frame और view.center का उपयोग करके दो दृश्यों को कैसे केंद्रित करें

[UIView animateWithDuration:1 delay:0 
        options:UIViewAnimationOptionCurveLinear 
       animations:^{ 
    sp.view.frame = self.view.center;   
} 

धन्यवाद!

उत्तर

15

पहला, sp.view.frameCGRect देता है जबकि self.view.centerCGPoint देता है। दोनों एक ही प्रकार के नहीं हैं और इसलिए किसी को दूसरे पर सेट नहीं किया जा सकता है।

sp.view.center = self.view.center; 

या

[sp.view setCenter:self.view.center]; 
+0

तो वर्तमान दृश्य केंद्र में सबव्यू सेट करने का कोई तरीका नहीं है? मुझे जरूरी नहीं है कि .frame –

+1

यह गलत है, क्योंकि नोहा दूसरे उत्तर में बताता है "एक सबव्यू का केंद्र उसी पर्यवेक्षण प्रणाली में इसके पर्यवेक्षण के रूप में नहीं होगा। किसी के केंद्र को दूसरे के लिए सेट करना अर्थहीन है" – nbransby

+0

यह काम करता है !!!! – onmyway133

9
self.view.center 

एक CGPoint struct है: ASssuming आप self.view के केंद्र होने के लिए sp.view का केन्द्र स्थापित करना चाहते हैं, तो आप उस दो तरीकों में से एक में कर सकते हैं।

sp.view.frame 

एक सीजीआरईटी संरचना है।

आप एक सीजीपीईटी को एक सीजीपीईटी को असाइन नहीं कर सकते हैं, क्योंकि प्रकार समान नहीं हैं।

sp.view.frame = CGRectMake 
(
    (self.view.frame.size.width/(CGFloat)2) - (sp.view.frame.size.width/(CGFloat)2), 
    (self.view.frame.size.height/(CGFloat)2) - (sp.view.frame.size.height/(CGFloat)2), 
    sp.view.frame.size.width, 
    sp.view.frame.size.height 
); 

संपादित

या नूह के रूप में सुझाव:

आप, एक subview केंद्रित करने के लिए चाहते हैं कुछ इस तरह उपयोग करते हैं, sp.view संभालने self.view की एक subview है

धन्यवाद नोहा, बीटीडब्ल्यू ...

+1

एक सबव्यू का केंद्र उसी पर्यवेक्षण प्रणाली में इसके पर्यवेक्षण के रूप में नहीं होगा। किसी के केंद्र को दूसरे के लिए सेट करना व्यर्थ है। –

+0

अगर मुझे सूचकांक पता नहीं है तो क्या होगा? क्या मैं उप-दृश्य को इंगित करने वाले चर का उपयोग कर सकता हूं? और @ नोहा, सबव्यू पूर्ण स्क्रीन है लेकिन इसमें से कुछ पारदर्शी है इसलिए मैं ऐसा करना चाहता हूं। –

+2

करीब, लेकिन अभी भी बंद है। यह सबव्यू के शीर्ष-बाएं कोने को इसके पर्यवेक्षण के केंद्र में रखेगा। शायद 'subview.center = CGPointMake (superview.bounds.size.width/2, superview.bounds.size.height/2)' –

0

यह इस
#define countmid(X,Y) (float) (X-Y)/2
तरह मैक्रो जोड़ने के लिए और फिर
float Center = countmid(VIEW.frame.size.width,SUB.frame.size.width);
के रूप में कोड में उपयोग देखें
कार्यक्षेत्र केंद्र के लिए एक ही की क्षैतिज केंद्र में अपने उप दृश्य जगह, बस के खिलाफ ऊंचाई का उपयोग संभव है चौड़ाई

+1

आपको वास्तव में सावधान रहना होगा कि आप सी में मैक्रोज़ को कैसे परिभाषित करते हैं। यह # COUNTFID (एक्स, वाई) ((फ्लोट) ((एक्स) - (वाई))/2) होना चाहिए – sapi

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