Cree sombra con QuartzCore para UITextView

He creado una sombra usando QuartzCore para mi UITextView con este siguiente código.

 myTextView.layer.masksToBounds = NO; myTextView.layer.shadowColor = [UIColor blackColor].CGColor; myTextView.layer.shadowOpacity = 0.7f; myTextView.layer.shadowOffset = CGSizeMake(2.0f, 2.0f); myTextView.layer.shadowRadius = 8.0f; myTextView.layer.shouldRasterize = YES; 

Crea una shadow y se looks good too. Aquí está mi salida para el código anterior.

introduzca la descripción de la imagen aquí

Pero cuando trato de agregar un text a myTextView , mi text textView sale de los límites y se ve fuera de myTextView como a continuación.

introduzca la descripción de la imagen aquí

Está sucediendo solo cuando agrego sombra . El text dentro del textView no se muestra extraño. Si no agrego sombra. ¿Qué estoy haciendo mal? ¿Cómo podría superar esto? ¿Por qué está sucediendo?

ACTUALIZAR:

@borrrden dijo que descubrí que está sucediendo, debido a la configuration de la maskToBounds = NO; Si establecemos YES entonces no podemos get sombra. Motivo Aquí es una respuesta

No hay una solución "correcta", debido al comportamiento UIView. Cuando masksToBounds es NO, cualquier subcapa que se extienda fuera de los límites de la capa será visible. Y UITextField desplaza el text fuera de la capa UITextField.

Agregue una vista clara detrás de UITextView y coloque una sombra en él.

Simplemente agregue otra UIView debajo de su textView y configure su capa para mostrar la sombra (no olvide configurar su color de background en algo que no sea color claro, o no dibuje sombra)

 myTextView = [UITextView alloc] initWithFrame:CGRectMake(100,100,200,200); UIView* shadowView = [UIView alloc] initWithFrame:myTextView.frame]; shadowView.backgroundColor = myTextView.backgroundColor; shadowView.layer.masksToBounds = NO; shadowView.layer.shadowColor = [UIColor blackColor].CGColor; shadowView.layer.shadowOpacity = 0.7f; shadowView.layer.shadowOffset = CGSizeMake(2.0f, 2.0f); shadowView.layer.shadowRadius = 8.0f; shadowView.layer.shouldRasterize = YES; [someView addSubview:shadowView]; [someView addSubView:myTextView]; 

Además de la respuesta anterior, simplemente copie todos los attributes desde el uiTextView original a la vista del ayudante:

 UITextView *helperTextView = [[UITextView alloc] init]; helperTextView = textView; //copy all attributes to the helperTextView; shadowTextView = [[UIView alloc] initWithFrame:textView.frame]; shadowTextView.backgroundColor = textView.backgroundColor; shadowTextView.layer.opacity = 1.0f; shadowTextView.layer.masksToBounds = NO; shadowTextView.layer.shadowColor = [UIColorFromRGB(0x00abff)CGColor]; shadowTextView.layer.shadowOpacity = 1.0f; shadowTextView.layer.shadowOffset = CGSizeMake(1.0f, 1.0f); shadowTextView.layer.shadowRadius = 10.0f; shadowTextView.layer.cornerRadius = 8.0f; shadowTextView.layer.shouldRasterize = YES; [self.view addSubview:shadowTextView]; [self.view addSubview:helperTextView];