2011-08-30 10 views
9

Kiedy zmieniam orientację, mój widok zmienia się nieprawidłowo, granice przeskakują w prawo lub w lewo, w dół lub w górę ... tutaj jest mój kod, pomóż mi proszę .... Jak mogę zmienić rozmiar mojego pełnego tekstu UIView .. dziękiJak prawidłowo zmienić rozmiar UIView podczas zmiany orientacji?

- (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]; 
} 

Odpowiedz

19

Możesz użyć właściwości autoresizingMask swojego UIView. Na przykład:

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

Z dokumentacji iOS:

Dyskusyjnego Kiedy granice rzutem zmieniają, że widok automatycznie zmieni rozmiar jego subviews według automatycznej zmiany maską każdego podrzędny jest. Użytkownik określa wartość tej maski, łącząc stałe opisane w UIViewAutoresizing za pomocą C bitowego operatora OR. Łącząc te stałe, możesz określić, które wymiary widoku powinny rosnąć lub zmniejszać się w stosunku do podglądu. Domyślną wartością tej właściwości jest UIViewAutoresizingNone, co oznacza, że ​​widok nie powinien być w ogóle zmieniany.

Jeśli ustawiono więcej niż jedną opcję wzdłuż tej samej osi, domyślnym zachowaniem jest proporcjonalna dystrybucja różnicy wielkości między elastycznymi częściami. Im większa część elastyczna, w stosunku do innych elastycznych części, tym bardziej rośnie. Załóżmy na przykład, że ta właściwość zawiera stałe UIViewAutoresizingFlexibleWidth i UIViewAutoresizingFlexibleRightMargin, ale nie zawiera stałej UIViewAutoresizingFlexibleLeftMargin, co oznacza, że ​​szerokość lewego marginesu widoku jest stała, ale szerokość i prawy margines widoku mogą się zmieniać. W związku z tym widok jest zakotwiczony po lewej stronie jego podglądu, podczas gdy zwiększa się zarówno szerokość widoku, jak i odstęp po prawej stronie widoku.

Jeśli zachowania autouzupełniania nie oferują dokładnego układu potrzebnego do wyświetlenia, można użyć niestandardowego widoku kontenera i zastąpić jego metodę layoutSubviews, aby precyzyjniej pozycjonować swoje podspoje.

Aby uzyskać więcej informacji zajrzyj tutaj: UIView class reference

+0

Tak, dzięki, rozumiem sztuczek autoresizingMask ale kiedy w Krajobraz ukryć pewne poglądy i powinien podnieść TextView się ... jeśli nie znajdę nic lepszego, ja zatrzyma się na AutoResizingMask –

+0

Możesz zmienić jego właściwość centrum lub po prostu zmienić klatkę, gdy masz inny tryb widoku. – Nekto

Powiązane problemy