2010-11-01 10 views
3

Fondamentalement, j'ai un UITextView et lorsque je le fais pivoter, la taille du contenu est plus large que la taille de l'image. Cela provoque le défilement horizontal de l'affichage de texte lorsqu'il n'y a pas de texte en dehors de l'image. Ce comportement n'est pas voulu.La rotation UITextView fait que la taille du contenu est plus large que la largeur de la trame

UITextView *ingredientsTextView = [[[UITextView alloc] initWithFrame:CGRectMake(50, 100,315,300)] autorelease]; 
    [ingredientsTextView setBackgroundColor:[UIColor clearColor]]; 
    [ingredientsTextView setEditable:NO]; 
    [ingredientsTextView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin]; 
    [ingredientsTextView setFont:[UIFont fontWithName:@"Helvetica" size:18]]; 
    [ingredientsTextView setText:ingredientsText]; 
    ingredientsTextView.transform = CGAffineTransformMakeRotation((3.44*M_PI)/180); 
    [ingredientsView addSubview:ingredientsTextView]; 

Je n'arrive pas à comprendre pourquoi cela se produit. Même en mettant dans une méthode setContentSize il fait défiler horizontalement (seulement d'environ 5/10pts) même lorsque la largeur est < 100!

Des idées? Est-ce juste un effet secondaire de la rotation?

Merci Tom

Répondre

3

Je pense que vous ne devriez pas tourner le textView, ce que vous devez faire pivoter la vue est en dessous. Par exemple, la vue de navigationController ou la vue de contenu d'un viewController.

+0

hmm, ok - Je l'ai fait dans un uilabel et l'ai mis dans un scrollview et fait pivoter cela, ce qui a semblé fonctionner. –

4

J'ai également été confronté à ce problème.

La seule solution que j'ai trouvée était de créer une instance de UIView et d'ajouter UITextView en tant que sous-vue. Ensuite, vous pouvez faire pivoter l'instance de UIView et UITextView fonctionnera très bien.

UITextView *myTextView = [[UITextView alloc] init]; 
[myTextView setFrame:CGRectMake(0, 0, 100, 100)]; 

UIView *myRotateView = [[UIView alloc] init]; 
[myRotateView setFrame:CGRectMake(20, 20, 100, 100)]; 
[myRotateView setBackgroundColor:[UIColor clearColor]]; 
[myRotateView addSubview:myTextView]; 

myRotateView.transform = CGAffineTransformMakeRotation(0.8); 
[[self view] addSubview:myRotateView];