2013-05-26 6 views
6

मैं अपने आईफोन ऐप स्क्रीन के केंद्र में एक छोटा आइकन जोड़ने की कोशिश कर रहा हूं। नीचे वह कोड है जो मुझे लगता है कि काम करना चाहिए, लेकिन यह इसे केंद्रित नहीं कर रहा है। चौड़ाई के बारे में स्थिति ठीक है, लेकिन ऊंचाई लगभग 100 पिक्सेल बंद है?स्क्रीन के सबव्यू सेंटर को जोड़ना

UIImage *pinMarker = [UIImage imageNamed:@"red_pen_marker.png"]; 
UIImageView *pinMarkerView = [[UIImageView alloc] initWithImage:pinMarker]; 
pinMarkerView.frame = CGRectMake(self.view.frame.size.width/2 - 9, self.view.frame.size.height/2 - 36, 18, 36); 


[self.view addSubview:pinMarkerView]; 

कोई सुझाव? हो सकता है कि यह इस स्क्रीन दृश्य के बजाय पूरे ऐप विंडो आकार के अनुसार रखे?

+2

मेरा अनुमान है कि आप एक UINavigationController का उपयोग कर रहे (संभवतः एक उपकरण पट्टी और/या संकेत दिखाकर के साथ) और आप एक दृश्य नियंत्रक के दृश्य में जोड़ रहे हैं कि, के रूप में विरोध किया है नेविगेशन नियंत्रक का विचार। –

उत्तर

13

यह self.view.frame.size.height/2 - 18 होना चाहिए। एक आसान तरीका बस इसे इस तरह स्थापित करने के लिए है:

pinMarkerView.center = self.view.center; 

लेकिन यह जानकर क्या जनक दृश्य यह असंभव है स्क्रीन के केंद्र में imageView लाने के लिए कैसे बताने के लिए है बिना।

+0

वैसे यह असंभव नहीं है। मुझे दिल से सभी कोड याद नहीं हैं लेकिन आप खिड़की का केंद्र प्राप्त कर सकते हैं और उसके बाद गणना के लिए विचारों में से एक पूछकर समन्वय की गणना कर सकते हैं। –

4

मुझे लगता है कि NSLayoutConstraint आपकी समस्या

UIView *superview = self.view; 

UIImage *pinMarker = [UIImage imageNamed:@"red_pen_marker.png"]; 
UIImageView *pinMarkerView = [[UIImageView alloc] initWithImage:pinMarker]; 
pinMarkerView.frame = CGRectMake(self.view.frame.size.width/2 - 9, self.view.frame.size.height/2 - 36, 18, 36); 

[pinMarkerView setTranslatesAutoresizingMaskIntoConstraints:NO]; 
[self.view addSubview:pinMarkerView]; 

NSLayoutConstraint *myConstraint =[NSLayoutConstraint 
            constraintWithItem:pinMarkerView 
            attribute:NSLayoutAttributeCenterX 
            relatedBy:NSLayoutRelationEqual 
            toItem:superview 
            attribute:NSLayoutAttributeCenterX 
            multiplier:1.0 
            constant:0]; 
NSLayoutConstraint *myConstraint2 =[NSLayoutConstraint 
            constraintWithItem:pinMarkerView 
            attribute:NSLayoutAttributeCenterY 
            relatedBy:NSLayoutRelationEqual 
            toItem:superview 
            attribute:NSLayoutAttributeCenterY 
            multiplier:1.0 
            constant:0]; 

[superview addConstraint:myConstraint]; 
[superview addConstraint:myConstraint2]; 
3

यहाँ एक समाधान

self.view.frame.size.width के बजाय

उपयोग :: [है का समाधान करना चाहिए यूआईस्क्रीन मुख्य स्क्रीन] .bounds.size.width या ऊंचाई

तो कोड

UIImage *pinMarker = [UIImage imageNamed:@"red_pen_marker.png"]; 
UIImageView *pinMarkerView = [[UIImageView alloc] initWithImage:pinMarker]; 
pinMarkerView.frame = CGRectMake([UIScreen mainScreen].bounds.size.width/2, [UIScreen mainScreen].bounds.size.height/2 , 18, 36); 
[self.view addSubview:pinMarkerView]; 
संबंधित मुद्दे