2011-08-30 17 views
9

जब मैं ओरिएंटेशन बदलता हूं तो मेरा टेक्स्टव्यू अनुचित रूप से बदलता है, सीमाएं दाएं या बाएं या नीचे या ऊपर कूदती हैं ... यहां मेरा कोड है, कृपया मेरी मदद करें .... मैं अपने पूर्ण टेक्स्ट UIView का आकार कैसे बदल सकता हूं .. धन्यवादअभिविन्यास बदलते समय UIView का सही आकार कैसे बदलें?

- (void)viewDidLoad 
{ frameHor=CGRectMake(0,10,275,306); 
    frameVer=CGRectMake(0, 51, 320, 351); 
.. 
} 



- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ 
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; 
    if(toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown){ 
     //self.view = portraitView; 
     [self changeTheViewToPortrait:YES andDuration:duration]; 

    } 
    else if(toInterfaceOrientation == UIInterfaceOrientationLandscapeRight || toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft){ 
     //self.view = landscapeView; 
     [self changeTheViewToPortrait:NO andDuration:duration]; 
    } 
} 

//-------------------------------------------------------------------------------------------------------------------------------------------------------------------- 

- (void) changeTheViewToPortrait:(BOOL)portrait andDuration:(NSTimeInterval)duration { 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:duration]; 

    if(portrait){ 

     self.titleLabel.hidden=NO; 
     self.backButton.hidden=NO; 
     [self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"det.png"]]]; 
     self.fullText.frame=CGRectMake(frameVer.origin.x, frameVer.origin.y, frameVer.size.width, frameVer.size.height); 



    } 
    else{ 

     self.titleLabel.hidden=YES; 
     self.backButton.hidden=YES; 

     self.fullText.frame=CGRectMake(frameHor.origin.x, frameHor.origin.y, frameHor.size.width, frameHor.size.height); 
     [self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"T_iphoneauto.png"]]]; 




    } 

    [UIView commitAnimations]; 
} 

उत्तर

19

आप अपने UIView की autoresizingMask संपत्ति का उपयोग कर सकते हैं।

blackView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin | 
           UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | 
           UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin; 

iOS दस्तावेज़ से: उदाहरण के लिए:

चर्चा जब किसी दृश्य के सीमा बदलने के लिए, उस दृश्य स्वचालित रूप से प्रत्येक subview के autoresizing मुखौटा के अनुसार अपने subviews आकार बदलता है। आप CITwise या ऑपरेटर का उपयोग करते हुए UIViewAutoresizing में वर्णित स्थिरांक को संयोजित करके इस मुखौटा का मान निर्दिष्ट करते हैं। इन स्थिरांकों को संयोजित करने से आप यह निर्दिष्ट कर सकते हैं कि दृश्य के किनारे दृश्यमान को बढ़ाना चाहिए या घटाना चाहिए। इस संपत्ति का डिफ़ॉल्ट मान UIViewAutoresizingNone है, जो इंगित करता है कि दृश्य का आकार बदलना नहीं चाहिए।

जब एक ही अक्ष के साथ एक से अधिक विकल्प सेट किए जाते हैं, तो डिफ़ॉल्ट व्यवहार लचीला भागों के बीच आनुपातिक रूप से आकार अंतर को वितरित करना है। अन्य लचीले हिस्सों के सापेक्ष लचीला हिस्सा बड़ा, जितना अधिक बढ़ने की संभावना है। उदाहरण के लिए, मान लें कि इस संपत्ति में UIViewAutoresizingFlexibleWidth और UIViewAutoresizingFlexibleRightMargin स्थिरांक शामिल हैं लेकिन इसमें UIViewAutoresizingFlexibleLeftMargin स्थिर शामिल नहीं है, इस प्रकार यह दर्शाता है कि दृश्य के बाएं मार्जिन की चौड़ाई तय की गई है, लेकिन दृश्य की चौड़ाई और दायां मार्जिन बदल सकता है। इस प्रकार, दृश्य अपने पर्यवेक्षण के बाईं ओर लंगर दिखाई देता है जबकि व्यू चौड़ाई और दृश्य के दाईं ओर अंतर दोनों बढ़ते हैं।

यदि ऑटोरेसेजिंग व्यवहार आपके विचारों के लिए आवश्यक सटीक लेआउट की पेशकश नहीं करते हैं, तो आप एक कस्टम कंटेनर व्यू का उपयोग कर सकते हैं और अपने सबव्यूज़ को अधिक सटीक रूप से रखने के लिए अपने लेआउट सबव्यूव्स विधि को ओवरराइड कर सकते हैं।

अधिक जानकारी के लिए यहाँ देखें: UIView class reference

+0

हाँ, धन्यवाद, मैं autoresizingMask चाल समझते हैं लेकिन लैंडस्केप में मैं कुछ विचारों को छिपाने और ऊपर TextView लिफ्ट चाहिए ... अगर मैं कुछ भी बेहतर नहीं मिल रहा है जब, मैं AutoResizingMask –

+0

पर रुक जाएगा आप अपने केंद्र की संपत्ति को बदल सकते हैं या फ्रेम बदल सकते हैं, जब आपके पास कोई अन्य दृश्य मोड हो। – Nekto

संबंधित मुद्दे