@adaliの答えは機能しますが、間違っています。UITextView
内部の表示ビューに影響を与えるために、それ自体にシャドウを追加しないでください。ご覧のとおり、カーソルに影を付けるとUITextView
、カーソルにも影が付きます。
使用する必要があるアプローチは、を使用することNSAttributedString
です。
NSMutableAttributedString* attString = [[NSMutableAttributedString alloc] initWithString:textView.text];
NSRange range = NSMakeRange(0, [attString length]);
[attString addAttribute:NSFontAttributeName value:textView.font range:range];
[attString addAttribute:NSForegroundColorAttributeName value:textView.textColor range:range];
NSShadow* shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor whiteColor];
shadow.shadowOffset = CGSizeMake(0.0f, 1.0f);
[attString addAttribute:NSShadowAttributeName value:shadow range:range];
textView.attributedText = attString;
ただしtextView.attributedText
、iOS6用です。下位バージョンをサポートする必要がある場合は、次のアプローチを使用できます。
CALayer *textLayer = (CALayer *)[textView.layer.sublayers objectAtIndex:0];
textLayer.shadowColor = [UIColor whiteColor].CGColor;
textLayer.shadowOffset = CGSizeMake(0.0f, 1.0f);
textLayer.shadowOpacity = 1.0f;
textLayer.shadowRadius = 0.0f;