2011-08-30 25 views
9

Yönlendirmeyi değiştirdiğimde, metin görüntüm yanlış şekilde yeniden boyutlandırılıyor, sınırlar sağa veya sola veya aşağıya veya yukarı atlıyor ... işte benim kodum, lütfen yardım et… fullText UIView'imi nasıl yeniden boyutlandırabilirim .. teşekkürlerYönlendirme değiştirilirken UIView düzgün şekilde yeniden boyutlandırılır?

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

cevap

19

Sen UIView autoresizingMask özelliğini kullanabilirsiniz. iOS belgelerine

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

: Örneğin: Bir görünümün sınırları değiştirmek

Tartışma bu görünüm otomatik olarak her Subview en otomatik yeniden boyutlandırma maskesi doğrultusunda subviews boyutlandırır. Bu maskenin değerini, UIViewAutoresizing'de açıklanan sabitleri C bitwise OR operatörünü kullanarak birleştirerek belirtirsiniz. Bu sabitleri birleştirmek, görünümün hangi boyutlarının süper görüntüye göre büyüyeceğini veya küçüleceğini belirtmenize izin verir. Bu özelliğin varsayılan değeri, görünümün hiç yeniden boyutlandırılmaması gerektiğini gösteren UIViewAutoresizingNone.

Aynı eksen boyunca birden fazla seçenek ayarlandığında, varsayılan davranış, boyut bölümlerini esnek bölümler arasında orantılı olarak dağıtmaktır. Diğer esnek kısımlara göre esnek kısım ne kadar büyükse, büyümesi daha olasıdır. Örneğin, bu özelliğin UIViewAutoresizingFlexibleWidth ve UIViewAutoresizingFlexibleRightMargin sabitlerini içerdiğini, ancak UIViewAutoresizingFlexibleLeftMargin sabitini içermediğini, böylece görünümün sol kenar boşluğunun genişliğinin sabit olduğunu ancak görünümün genişlik ve sağ kenar boşluğunun değişebileceğini varsayalım. Böylece hem görünüm genişliği hem de görünümün sağındaki boşluk artarken, görünüm süper görünümünün sol tarafına demirlenir.

Otomatik yedekleme davranışları, görünümleriniz için gereksinim duyduğunuz tam düzeni sunmuyorsa, özel bir kapsayıcı görünümü kullanabilir ve altyazılarınızı daha hassas bir şekilde konumlandırmak için layoutSubviews yöntemini geçersiz kılabilirsiniz.

Daha fazla bilgi için buraya bakın: UIView class reference

+0

Evet, teşekkürler, autoresizingMask hileler anlıyorum ama Peyzajı bazı görüşlerini gizlemek ve yukarı TextView'un kaldırması gerektiğini ... Ben şey daha iyi bulamazlarsa, ben AutoResizingMask –

+0

'da duracaktır. Başka bir görünüm moduna sahipseniz, merkez özelliğini değiştirebilir veya yalnızca çerçeveyi değiştirebilirsiniz. – Nekto

İlgili konular