我一直在尋找一種簡單的方法來爲UITextView的文本添加陰影,就像你可以在UILabel中做的那樣。我發現this question哪裏有一個應該這樣做的答案,但是,爲什麼這應該是這樣的,這沒有意義。如何將文字陰影添加到UITextView?
問題:向UITextView本身的圖層添加陰影不應該影響裏面的文本,而應該影響整個對象,對嗎?
在我的情況下,即使向textview的圖層添加陰影也沒有任何效果(甚至在添加QuartzCore標題之後)。
我一直在尋找一種簡單的方法來爲UITextView的文本添加陰影,就像你可以在UILabel中做的那樣。我發現this question哪裏有一個應該這樣做的答案,但是,爲什麼這應該是這樣的,這沒有意義。如何將文字陰影添加到UITextView?
問題:向UITextView本身的圖層添加陰影不應該影響裏面的文本,而應該影響整個對象,對嗎?
在我的情況下,即使向textview的圖層添加陰影也沒有任何效果(甚至在添加QuartzCore標題之後)。
@阿達利的回答會的工作,但它的錯。您不應該將陰影添加到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;
我試過,發現,你應該設置的UITextView的的backgroundColor透明, 所以影子應該工作
UITextView *text = [[[UITextView alloc] initWithFrame:CGRectMake(0, 0, 150, 100)] autorelease];
text.layer.shadowColor = [[UIColor whiteColor] CGColor];
text.layer.shadowOffset = CGSizeMake(2.0f, 2.0f);
text.layer.shadowOpacity = 1.0f;
text.layer.shadowRadius = 1.0f;
text.textColor = [UIColor blackColor];
//here is important!!!!
text.backgroundColor = [UIColor clearColor];
text.text = @"test\nok!";
text.font = [UIFont systemFontOfSize:50];
[self.view addSubview:text];
作品,感謝,感激 – johnbakers
哈哈,iOS6的是不是我就回答了這個問題:) – adali
是啊,它很難保持這些評論是最新發布的:P – cnotethegr8