2010-06-15 15 views
7

मेरे पास एक छोटा UIView है जो हमेशा स्क्रीन के केंद्र में दिखाई देना चाहिए। यह पोर्ट्रेट मोड के लिए बहुत अच्छा काम करता है लेकिन परिदृश्य में नहीं है।हमेशा केंद्र UIView

myView.frame = CGRectMake((visibleArea.size.width - MY_VIEW_WIDTH)/2, (visibleArea.size.height - MY_VIEW_HEIGHT)/2, MY_VIEW_WIDTH, MY_VIEW_HEIGHT); 
myView.autoresizingMask = (
          UIViewAutoresizingFlexibleTopMargin | 
          UIViewAutoresizingFlexibleBottomMargin | 
          UIViewAutoresizingFlexibleLeftMargin | 
          UIViewAutoresizingFlexibleRightMargin 
          ); 
कोई भी विचार

क्या याद आ रही हो सकता है:

UIView मैं उपयोग आकर्षित करने के लिए?

उत्तर

21

क्यों

myView.center = controller.view.center

+0

के साथ समान है यह हर बार मेरे लिए काम करता है। – Kyle

+1

उत्तर के लिए धन्यवाद, हालांकि व्यक्तिगत रूप से, मैं जानना चाहता हूं कि पोस्टर का कोड अपेक्षित रूप से क्यों काम नहीं करता है ... –

1

शायद आप स्टेटस बार का अभिविन्यास नहीं बदलते हैं। यदि आप ऐसा नहीं करते हैं, तो डिवाइस सोचता है कि अभिविन्यास अभी भी चित्रित नहीं है, न कि परिदृश्य।

+0

मैंने स्टेटस बार को स्पर्श नहीं किया और जब मैं इंटरफ़ेस घुमाता हूं तो यह वास्तव में स्थिति बदलता है। बात यह है कि [[यूआईस्क्रीन मुख्यस्क्रीन] सीमाओं के लिए पूछते समय इंटरफ़ेस को किस मोड में हमेशा पोर्ट्रेट मोड की सीमा मिलती है]। जब उपयोगकर्ता परिदृश्य में ऐप शुरू करता है तो यह स्पष्ट रूप से उपयोगी नहीं होता है। अन्य तो ऑटोरेसाइजिंग कुछ किसी चीज से उलझन में प्रतीत होता है। –

+0

एमएमएमएम, [[यूआईस्क्रीन मुख्यस्क्रीन] एप्लिकेशन फ्रेम के साथ फ्रेम प्राप्त करने का प्रयास करें]। मुझे यकीन नहीं है कि यह फ्रेम अभिविन्यास के साथ बदलता है, लेकिन यदि ऐसा नहीं होता है, तो डिवाइस अभिविन्यास प्राप्त करें और यदि यह परिदृश्य में है, तो चौड़ाई और ऊंचाई स्विच करें। – emenegro

+0

यह फ्रेम –

2

एप्लिकेशन ऑटो घूर्णन है नहीं की कोशिश?

मेरा मतलब है, आपकी -[UIViewController shouldAutorotateToInterfaceOrientation:] विधि कैसी दिखती है? क्या आपके पास अपनी Info.plist फ़ाइल में प्रारंभिक और समर्थित उन्मुखताएं हैं?

माता-पिता के दृश्य autoresizesSubviews संपत्ति को भी देखें।

1

मैंने डिवाइस के अभिविन्यास के आधार पर सीमाएं देने के लिए एक संपत्ति बनाई है। (यह यूआईस्क्रीन पर एक श्रेणी में है।)

- (CGRect)boundsWithRespectToOrientation 
{ 
    CGRect bounds = self.bounds; 

    if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]) && bounds.size.height > bounds.size.width) 
     bounds = CGRectMake(bounds.origin.x, bounds.origin.y, bounds.size.height, bounds.size.width); 
    else if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation]) && bounds.size.width > bounds.size.height) 
     bounds = CGRectMake(bounds.origin.x, bounds.origin.y, bounds.size.height, bounds.size.width); 

    return bounds; 
} 
+0

क्या यह वास्तव में कुछ भी करता है? यह वैसे भी वही मूल्य देता है ... –