2011-08-30 14 views
9

Quando cambio orientamento la mia visualizzazione testo si ridimensiona in modo errato, i limiti saltano a destra oa sinistra o in basso o in alto ... ecco il mio codice, aiuto il mio favore .... Come posso ridimensionare il mio fullText UIView .. grazieCome ridimensionare UIView correttamente quando si cambia orientamento?

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

risposta

19

È possibile utilizzare la proprietà autoresizingMask del proprio UIView. Ad esempio:

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

Dalla documentazione IOS:

Discussione Quando limiti di un cambio di vista, che guarda ridimensiona automaticamente i subviews secondo la maschera ridimensionamento automatico di ogni visualizzazione secondaria. Specificare il valore di questa maschera combinando le costanti descritte in UIViewAutoresizing utilizzando l'operatore OR bit a bit C. La combinazione di queste costanti consente di specificare quali dimensioni della vista dovrebbero aumentare o diminuire rispetto alla superview. Il valore predefinito di questa proprietà è UIViewAutoresizingNone, che indica che la vista non deve essere ridimensionata.

Quando si imposta più di una opzione lungo lo stesso asse, il comportamento predefinito è di distribuire proporzionalmente la differenza di dimensione tra le parti flessibili. Più grande è la porzione flessibile, rispetto alle altre porzioni flessibili, più è probabile che cresca. Ad esempio, supponiamo che questa proprietà includa le costanti UIViewAutoresizingFlexibleWidth e UIViewAutoresizingFlexibleReadMargin ma non includa la costante UIViewAutoresizingFlexibleLeftMargin, indicando quindi che la larghezza del margine sinistro della vista è fissa ma che la larghezza e il margine destro della vista potrebbero cambiare. Pertanto, la vista appare ancorata al lato sinistro della sua superview mentre aumentano sia la larghezza della vista che la distanza a destra della vista.

Se i comportamenti di autoresizzazione non offrono il layout preciso necessario per le visualizzazioni, è possibile utilizzare una vista contenitore personalizzata e sovrascrivere il metodo layoutSubviews per posizionare le proprie visualizzazioni secondarie in modo più preciso.

Per maggiori informazioni guardate qui: UIView class reference

+0

Sì, grazie, ho capito i trucchi autoresizingMask ma quando nel paesaggio mi nascondo alcuni punti di vista e dovrebbe sollevare TextView up ... se non trovo niente di meglio, ho si fermerà a AutoResizingMask –

+0

Puoi cambiare la proprietà del centro o cambiare cornice, quando hai un'altra modalità di visualizzazione. – Nekto

Problemi correlati