UITextView IOS rotativo y escalado

Cómo hacer que UITextView pueda UITextView tamaño con un gesto de pellizco junto con la capacidad de escalar (cambiar el tamaño).

El problema es que se difumina al cambiar el tamaño con rotation.

Lo que sigue es mi código:

 - (void)handlePinchOrRotateGesture:(UIGestureRecognizer *)recognizer { switch (recognizer.state) { case UIGestureRecognizerStateBegan: { if ([recognizer isKindOfClass:[UIRotationGestureRecognizer class]]) { self.currentRotateTransform = self.referenceRotateTransform; self.activeRotationRecognizer = (UIRotationGestureRecognizer *)recognizer; } else { NSLog(@"height %f, width %f",currentTF.frame.size.height,currentTF.frame.size.width); self.activePinchRecognizer = (UIPinchGestureRecognizer *)recognizer; } break; } case UIGestureRecognizerStateChanged: { CGAffineTransform currentTransform = self.referenceRotateTransform; if ([recognizer isKindOfClass:[UIRotationGestureRecognizer class]]) { self.currentRotateTransform = [self.class applyRecognizer:recognizer toTransform:self.referenceRotateTransform]; } currentTransform = [self.class applyRecognizer:self.activePinchRecognizer toTransform:currentTransform]; currentTransform = [self.class applyRecognizer:self.activeRotationRecognizer toTransform:currentTransform]; currentTF.transform = currentTransform; break; } case UIGestureRecognizerStateEnded: { CGAffineTransform currentTransform = self.referenceRotateTransform; if ([recognizer isKindOfClass:[UIRotationGestureRecognizer class]]) { self.referenceRotateTransform = [self.class applyRecognizer:recognizer toTransform:self.referenceRotateTransform]; self.currentRotateTransform = self.referenceRotateTransform; self.activeRotationRecognizer = nil; } else if ([recognizer isKindOfClass:[UIPinchGestureRecognizer class]]) { self.scale *= [(UIPinchGestureRecognizer *)recognizer scale]; self.activePinchRecognizer = nil; CGFloat currentFontSize = fontSize * _scale; if (!isRotaed) { if (CGPointEqualToPoint(self.referenceCenter, CGPointZero)) { currentTF.center = CGPointMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds)); } currentTransform = [self.class applyRecognizer:self.activePinchRecognizer toTransform:currentTransform]; NSLog(@"height %f, width %f",currentTF.frame.size.height,currentTF.frame.size.width); currentTF.transform = currentTransform; UITextView *newText = [[UITextView alloc]init]; newText.scrollEnabled=YES; newText.text=currentTF.text; newText.font =[UIFont fontWithName:strFont size:currentFontSize]; [newText sizeToFit]; newText.scrollEnabled=NO; currentTF.font = [UIFont fontWithName:strFont size:currentFontSize]; NSLog(@"height %f, width %f",currentTF.frame.size.height,currentTF.frame.size.width); currentTF.frame =CGRectIntegral(newText.frame); currentTF.center = CGPointMake(CGRectGetMidX(self.veText.bounds), CGRectGetMidY(self.veText.bounds)); } } break; } default: break; } } + (CGAffineTransform)applyRecognizer:(UIGestureRecognizer *)recognizer toTransform:(CGAffineTransform)transform { if (!recognizer || !([recognizer isKindOfClass:[UIRotationGestureRecognizer class]] || [recognizer isKindOfClass:[UIPinchGestureRecognizer class]])) { return transform; } if ([recognizer isKindOfClass:[UIRotationGestureRecognizer class]]) { return CGAffineTransformRotate(transform, [(UIRotationGestureRecognizer *)recognizer rotation]); } CGFloat scale = [(UIPinchGestureRecognizer *)recognizer scale]; return CGAffineTransformScale(transform, scale, scale); }