2011-05-22 7 views
5

मैं UIView में कैलियर जोड़ने का कुछ सरल परीक्षण कर रहा हूं। एक iPhone 4 अनुप्रयोग के अपने मुख्य नियंत्रक वर्ग में, मैं इस तरह के रूप viewDidLoad पद्धति लागू:आईओएस: self.view.bounds पूरे विंडो को भरता नहीं है

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSLog(@"%s", __PRETTY_FUNCTION__); 

    CALayer* ca = [[CALayer alloc] init]; 
    [ca setBounds:self.view.bounds]; 

    [ca setBackgroundColor:[[UIColor blueColor] CGColor]]; 

    [self.view.layer addSublayer:ca]; 
} 

नीले रंग की पृष्ठभूमि केवल कब्जा स्क्रीन के 1/4।

enter image description here

मुझे आश्चर्य है कि अगर यह होता है, क्योंकि मैं ध्यान में रेटिना प्रदर्शन नहीं लिया? इस स्थिति में सबसे अच्छा अभ्यास क्या है?


जोड़ी इन डीबग संदेश:

NSLog(@"frame w:%f h:%f", self.view.frame.size.width, self.view.frame.size.height); 
NSLog(@"bounds w:%f h:%f", self.view.bounds.size.width, self.view.bounds.size.height); 

आउटपुट:

frame w:320.000000 h:460.000000 
bounds w:320.000000 h:460.000000 
+0

'self.view.frame' का मूल्य क्या है? क्या आप सत्यापित कर सकते हैं –

+0

@ दीपक: यह {चौड़ाई: 320, ऊंचाई: 460} है। प्रश्न में डीबग आउटपुट भी जोड़ा गया। –

उत्तर

8

setContentsScale, कोई प्रभाव नहीं है

[ca setContentsScale:[[UIScreen mainScreen] scale]]; 

लेकिन अगर मैं

का उपयोग
[ca setFrame:self.view.bounds]; 

यह काम करता है।

+0

+1 अच्छा है! 'स्थिति' शून्य होने के साथ, शेष सामग्री स्क्रीन बंद हो गई। –

+0

@ दीपक: मैं देखता हूँ! तो कैलियर पद स्थिति/एंकर बिंदु पर आधारित है, जो सीमाओं के केंद्र बिंदु पर है। आपकी सहायता के लिए बहुत धन्यवाद। –

+0

आपने इसे समझ लिया। मैंने अभी व्याख्या की। :) –