2014-10-09 3 views
1

Я пытаюсь повернуть UITextView в своем VC. Когда я пытаюсь повернуть его, UITextView изменяет его размер?Как повернуть UITextView без изменения размера?

Вот мой код.

- (void)viewDidLoad { 

     [super viewDidLoad]; 
     self.edgesForExtendedLayout = UIRectEdgeNone; 

     self.title = @"Signature View"; 

     [self.signatureView setLineWidth:2.0]; 
     self.signatureView.foregroundLineColor = [UIColor colorWithRed:0.204 green:0.596 blue:0.859 alpha:1.000]; 

     NSLog(@"contentsize: %.0f, %.0f", self.view.frame.size.width, self.view.frame.size.height); <-- this is (contentsize: 320, 568) 

     self.howToTextView.frame = CGRectMake(0, 0, self.view.frame.size.height, self.view.frame.size.width); 

     [self.howToTextView setNeedsDisplay]; <-- to make it redraw 

     [self.howToTextView setTransform:CGAffineTransformMakeRotation(-90* M_PI/180)]; 

     NSLog(@"contentsize: %.0f, %.0f", self.howToTextView.contentSize.width, self.howToTextView.contentSize.height); <--- turns out to be (contentsize: 103, 138)same as on storyboard design 

    } 

UPDATE (С этим кодом UITextView на месте, а рама является правильной, но не текст не будет изменять размер, чтобы заполнить uitextviews нового размера кадра Ее застряли вниз в нижнем углу.?):

- (void)viewDidLoad { 

     [super viewDidLoad]; 
     self.edgesForExtendedLayout = UIRectEdgeNone; 

     self.title = @"Signature View"; 

     [self.signatureView setLineWidth:2.0]; 
     self.signatureView.foregroundLineColor = [UIColor colorWithRed:0.204 green:0.596 blue:0.859 alpha:1.000]; 

     NSLog(@"contentsize: %.0f, %.0f", self.view.frame.size.width, self.view.frame.size.height); 

     self.howToTextView = [[UITextView alloc] init]; 
     self.howToTextView.backgroundColor = [UIColor redColor]; 
     self.howToTextView.text = @"this is a good day. i am going to make millions today. Smile while on the phone as it is the best way to increase your business. I hope that you like this app as we have work really hard on it. Please sign your name or decline but if you decline then you understand you lose all coverage."; 

     [self.view addSubview:self.howToTextView]; 


     [self.howToTextView setTransform:CGAffineTransformMakeRotation(-90* M_PI/180)]; 
     self.howToTextView.frame = CGRectMake(0, 0, 80, self.view.frame.size.height); 
     [self.howToTextView setNeedsDisplay]; 

     NSLog(@"contentsize: %.0f, %.0f", self.howToTextView.contentSize.width, self.howToTextView.contentSize.height); 

    } 

UPDATE 2: Вставлять в TextView внутри UIView делает правильный размер контента, но теперь с этого кода UITextView/UIView находятся в правом верхнем углу приложения, даже если я устанавливаю их обоих, чтобы быть 0 , 0 для x, y? Не знаете, почему это так?

 self.howToTextView = [[UITextView alloc] init]; 
     [self.howToTextView setFrame:CGRectMake(0, 0, self.view.frame.size.height-20, 110)]; 
     self.howToTextView.backgroundColor = [UIColor redColor]; 
     self.howToTextView.text = @"this is a good day. i am going to make millions today. Smile while on the phone as it is the best way to increase your business. I hope that you like this app as we have work really hard on it. Please sign your name or decline but if you decline then you understand you lose all coverage."; 

     UIView *myRotateView = [[UIView alloc] init]; 
     [myRotateView setFrame:CGRectMake(0, 0, self.view.frame.size.height, 120)]; 
     [myRotateView setBackgroundColor:[UIColor greenColor]]; 
     [myRotateView addSubview:self.howToTextView]; 

     myRotateView.transform = CGAffineTransformMakeRotation(-90* M_PI/180); 
     [[self view] addSubview:myRotateView]; 
+0

Если вы используете раскадровки, вероятно, ваш размер контента изменяется даже без преобразования. Это так? –

+0

Да, я удален из раскадровки и создаю ее вручную. Я имею его в правильной форме и размере, но ТЕПЕРЬ текст только занимает около .10 UITextView. Его, как внешние края UITextView, изменились правильно, но внутренний контент и текст этого не осознают. Обновление кода выше. – jdog

ответ

0

После двух дней боролись, я нашел обходной путь:

  1. Создать UIView.
  2. Добавьте UITextView в качестве дополнительного представления.
  3. Получите правильный размер UITextView, используя sizeThatFits().
  4. Установить рамку UITextView.
  5. Установите раму UIView с шириной 0 и шириной 0 (это важно!).
  6. Поверните свой UIView.

Теперь, если вы хотите изменить размер шрифта сделать это следующим образом:

myTextView.font = UIFont.boldSystemFontOfSize(size) 
let maxsize = CGSizeMake(SCREEN_WIDTH, SCREEN_HEIGHT) 
let frame = myTextView.sizeThatFits(maxsize) 
myTextView.frame = CGRectMake(0, 0, frame.width, frame.height) 

В конце снова повернуть UIView.

Смежные вопросы