2016-01-25 7 views
6

Il layout automatico ritaglia in modo casuale il testo nel mio UITextView. Cambia la dimensione di UITextContainerView quando si ruota avanti e indietro da orizzontale a verticale. Funzionerà correttamente diverse volte ma cambierà casualmente il contenitore e ritaglierà il testo statico.La vista UItext viene ritagliata in modo casuale quando si utilizza l'Autolayout o il preferito StyleForTextStyle

Se disattivo Autolayout, il problema scompare. Si abbassa anche se si elimina il codice preferito di FontForTextStyle e si mantiene l'Autolayout.

Il fatto è che volevo consentire all'utente di impostare la dimensione del testo e poter utilizzare il layout automatico. Il testo è tutto statico quindi questa dovrebbe essere una cosa semplice.

Qualcuno ha visto questo? Si tratta di un bug o di qualcosa di sbagliato?

Ho ridotto il codice al minimo possibile per provare a isolare il problema.

Ecco il codice

// BugTest_ViewController.h 
 
// 
 
// 
 
// 
 
// 
 

 
#import <UIKit/UIKit.h> 
 

 
@interface BugTest_ViewController : UIViewController 
 

 

 

 
@property (weak, nonatomic) IBOutlet UIImageView *image1; 
 

 
@property (weak, nonatomic) IBOutlet UITextView *text1; 
 

 

 

 
@end

// BugTest_ViewController.m 
 
// 
 
// 
 
// 
 
// 
 

 
#import "BugTest_ViewController.h" 
 

 
@interface BugTest_ViewController() 
 

 

 
@end 
 

 
@implementation BugTest_ViewController 
 

 
- (void)viewDidLoad 
 
{ 
 
    [super viewDidLoad]; 
 
    // Do any additional setup after loading the view. 
 
    
 
} 
 

 
-(void)viewWillAppear:(BOOL)animated 
 
{ 
 

 
    self.text1.font = [UIFont preferredFontForTextStyle:UIFontTextStyleBody]; 
 
    [self.text1 setContentOffset:CGPointZero animated:YES]; 
 
    
 
}

Ecco il contenitore quando la vista si presenta come dovrebbe Good Container

Ecco il contenitore quando illa vista viene ritagliata. Bad Container clipping my text

+0

Controlla i tuoi vincoli di visualizzazione del testo. – Lumialxk

+0

L'ho fatto. Non ci sono stati conflitti o avvertimenti. – user3259366

+0

Sono presenti 4 vincoli. Spazio principale a: Superview = -7.0 Spazio inferiore a: Superview = 0 Allinea centro x a: Immagine 1 Spazio superiore a: Immagine 1 = predefinito. – user3259366

risposta

1

La soluzione da this question mi aiuta. Scrivo qualcosa del genere:

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator 
{ 
    _textView.scrollEnabled = NO; 
    [coordinator animateAlongsideTransition:nil completion:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) { 
     _textView.scrollEnabled = YES; 
    }]; 
} 
Problemi correlati