2010-12-10 13 views
10

मैंने UIView को स्थान देने की कोशिश करने में कुछ घंटे बिताए और आखिरकार यह पता लगाया कि मुझे दृश्य फ्रेम को संशोधित करने की आवश्यकता है। तो मैं इसUIView को कैसे स्थिति दें?

- (void) setPosition:(CGPoint)position 
{ 

    CGRect newFrame = self.view.frame; 
    newFrame.origin.x = position.x; 
    newFrame.origin.y = position.y; 
    self.view.frame = newFrame; 

} 

हालांकि तरह UIViewController उपवर्ग, कि इतना आसान है कि मुझे समझ नहीं आता क्यों UIViews इस पद्धति पहले से नहीं है लगता है, जो मुझे लगता है कि यह नहीं हो सकता है बनाता है के लिए एक 'setPosition' विधि जोड़ा ऐसा करने का सही तरीका बनें। तो यह मेरा सवाल है ...

क्या यह विधि ठीक है या मैं कुछ कर रहा हूं जो मुझे नहीं करना चाहिए ... किसी कारण से?

उत्तर

12

फ्रेम की प्रतिलिपि बनाना, संशोधित करना और सेट करना जैसे आपने यहां किया है, यह आमतौर पर किया जाता है। यह भी एक रेक्ट बनाने और इसे सीधे सेट करके किया जा सकता है:

UIView.frame = CGRectMake(50,50,50,50);//x,y,w,h

एक एनीमेशन ब्लॉक में ऐसा करने से इन परिवर्तनों चेतन होगा।

UIView.center = CGPointMake(50,50);

+0

यदि आपके पास आईबीओटलेट्स के संदर्भ हैं, लेकिन एक तत्व रखना चाहते हैं जिसे केवल प्रोग्रामेटिक रूप से बनाया जा सकता है, तो मैं फ्रेम के रूप में उपयोग करने के लिए एक UIView (myFrame) बनाता हूं, और फिर MyCustomView.frame = [myFrame सीमाएं], और जोड़ता हूं मुख्य दृश्य कंटेनर में MyCustomView – jay

2

अन्य तरीका:

Alternitively आप के साथ एक बार देखा गया केंद्र बिंदु निर्धारित कर सकते हैं

CGPoint position = CGPointMake(100,30); 
[self setFrame:(CGRect){.origin = position,.size = self.frame.size}]; 

यह मैं आकार मापदंडों बचाने के लिए और केवल मूल बदल जाते हैं।