2011-08-30 73 views
9

當我改變方向我的textview調整不當,界限跳轉到右邊或左邊或下來或上...這是我的代碼,幫助我請....我如何調整我的fullText 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文檔:

討論 當視圖的邊界改變,該視圖將自動根據每個子視圖的自動尺寸調整掩模調整大小它的子視圖。您可以通過使用C按位或運算符組合UIViewAutoresizing中描述的常量來指定此掩碼的值。通過組合這些常量,可以指定視圖的哪些維度應相對於超級視圖增長或縮小。該屬性的默認值是UIViewAutoresizingNone,它表示視圖不應該被調整大小。

如果設置了同一軸上的多個選項,則默認行爲是在靈活部分之間按比例分配大小差異。柔性部分相對於其他柔性部分越大,其可能生長得越多。例如,假設此屬性包含UIViewAutoresizingFlexibleWidth和UIViewAutoresizingFlexibleRightMargin常量,但不包含UIViewAutoresizingFlexibleLeftMargin常量,因此表示視圖左邊距的寬度是固定的,但視圖的寬度和右邊距可能會更改。因此,視圖會出現在其超視圖的左側,而視圖寬度和視圖右側的空白都會增加。

如果自動調整行爲不能提供視圖所需的精確佈局,則可以使用自定義容器視圖並覆蓋其layoutSubviews方法以更精確地定位子視圖。

欲瞭解更多信息請看這裏:UIView class reference

+0

是的,謝謝,我明白autoresizingMask技巧,但是當在景觀我隱藏了一些意見和應取消的TextView起來......如果我沒有找到更好的東西,我將停在AutoResizingMask –

+0

當您有其他視圖模式時,您可以更改它的中心屬性或更改框架。 – Nekto

相關問題