2011-12-21 10 views
20

मैं आईपैड के लिए आवेदन कर रहा हूं, केवल लैंडस्केप मोड समर्थित होगा। मेरे पास UIView है और बाद में मैं गतिशील रूप से UIImageView को एक सबव्यूव के रूप में जोड़ रहा हूं। हालांकि मेरा लक्ष्य UIView के केंद्र में छवियों को जोड़ना है। तो मैं इस कोड,UIView.center = UIImageView.center लेकिन छवि दृश्य परिदृश्य में केंद्र में प्रतीत नहीं होता है

[imageView setCenter:dynamicMainView.center]; 

जहां imageView UIImageView (स्पष्ट :)) और dynamicMainView UIView है, हालांकि अंतिम परिणाम लेक्चरर केंद्र में होने लगते हैं,

दृश्य प्रतिनिधित्व है इस्तेमाल किया

enter image description here


विज्ञापन के लिए पूर्ण विधि कोड UIView में डिंग UIImageView, है

-(void) addImageIntoMainDynamicView:(UIImage *) image 
{ 
    [self clearImageFromMainDynamicView];//Always clear Dynamic main view before adding new views 
    imageView = [[UIImageView alloc] initWithImage:image]; 
     if(imageView.bounds.size.width > dynamicMainView.bounds.size.width || imageView.bounds.size.height > dynamicMainView.bounds.size.height) 
     { 
      [imageView setFrame:[dynamicMainView bounds]]; 
     } 

     [imageView setCenter:dynamicMainView.center]; 
     NSLog(@"Image : X = %f and Y = %f", imageView.center.x,imageView.center.y); 
     NSLog(@"UIView : X = %f and Y = %f", dynamicMainView.center.x,dynamicMainView.center.y); 
     [dynamicMainView addSubview:imageView]; 
    [imageView release]; 
} 

और इसके बाद के संस्करण लॉग मूल्य है,

2011-12-21 21:07:11.850 Map1TestApp[94645:11603] Image : X = 512.000000 and Y = 371.500000 
2011-12-21 21:07:11.853 Map1TestApp[94645:11603] UIView : X = 512.000000 and Y = 371.500000 

कारण है कि यह केंद्र में जोड़ने नहीं कर रहा है के बारे में कोई सुराग? क्या मुझसे कुछ गलत हो रही है?


भविष्य व्यूअर के लिए anwser था: यह superview के समन्वय प्रणाली है में

[imageView setCenter:CGPointMake(CGRectGetMidX([dynamicMainView bounds]), CGRectGetMidY([dynamicMainView bounds]))]; 

उत्तर

20

एक दृश्य की center व्यक्त की है। तो आप गलत समन्वय प्रणाली में अपने छवि दृश्य को केंद्रित कर रहे हैं। (डायनामिक व्यू के पर्यवेक्षण के रूप में गतिशील दृश्य के विपरीत)

केंद्र देखने के लिए एक दृश्य बी के भीतर, केंद्र बिंदु दृश्य ए को bounds व्यंग्य के आयत का केंद्र होना चाहिए। आप इसका उपयोग कर सकते हैं (स्मृति से!) CGRectGetMidX और CGRectGetMidY

+0

तो मुझे अपनी समझ की जांच करें, इससे पहले कि मैं फ़्रेम बाउंड प्राप्त कर रहा था जो कि केवल एक UIView स्पेस (Rect) की बजाय पूरी स्क्रीन है? लेकिन अब मुझे केंद्र मिल रहा है UIView के सीजीआरएक्ट? क्या मैं सही हू? – doNotCheckMyBlog

+1

हां, यही वह है। सीमाएं अपने समन्वय प्रणाली (मूल 0,0) के विचारों में दृश्य का आकार है। फ़्रेम दृश्य का आकार है लेकिन उत्पत्ति पर्यवेक्षण के समन्वय प्रणाली में बिंदु है जहां शीर्ष बाएं कोने है। केंद्र संपत्ति पर्यवेक्षण के समन्वय प्रणाली में है। – jrturton

0

आपको छवि का आकार जांचना चाहिए। छवि का फ्रेम UIImageView का फ्रेम नहीं हो सकता है। UIImageView के पृष्ठभूमि रंग को [UIColor redColor] और क्लिपटॉउंड्स को सत्य पर सेट करें और देखें कि क्या होगा। यदि लाल भाग हैं जो दिखाई दे रहे हैं तो समस्या सामग्री के साथ है आपकी छवि की मुख्य संपत्ति दृश्य वस्तु देखें।

+0

हाँ मैंने लॉल से पहले इसकी जांच की, यह ठीक था, लेकिन jrturton के सुझाव काम किया। मैंने एक स्निपेट पोस्ट किया है जिसने मेरी जांच हल की है :) – doNotCheckMyBlog