2012-06-16 97 views
2

我已經在Stack Overflow上搜索了蘋果的文檔和其他帖子,但是我仍然無法在UITextView的內部添加陰影。我想使它看起來像一個UITextField。這是我試過的代碼。UITextview像UITextField陰影

CALayer *frontLayer = self.frontField.layer; 
[frontLayer setBorderColor:CGColorCreate(CGColorSpaceCreateDeviceGray(), nil)]; 
[frontLayer setBorderWidth:1]; 
[frontLayer setCornerRadius:5]; 
[frontLayer setShadowRadius:10.0]; 
CGSize shadowOffset = {0.0,3.0}; 
[frontLayer setShadowOffset:shadowOffset]; 
[frontLayer setShadowOpacity:1]; 
self.frontField.clipsToBounds = YES; 

我哪裏錯了?

回答

2

剛開始時簡單,試試這個:

[myTextView.layer setShadowColor:[[UIColor blackColor] CGColor]]; 
[myTextView.layer setShadowOffset:CGSizeMake(1.0, 1.0)]; 
[myTextView.layer setShadowOpacity:1.0]; 
[myTextView.layer setShadowRadius:0.3]; 
[myTextView.layer.masksToBounds = NO]; //<-- for UITextView! 

優化性能也增加:

view.layer.shadowPath = [UIBezierPath bezierPathWithRect:myTextView.bounds].CGPath; 

然後,您可以通過1添加其他的屬性早在1,看看是什麼原因造成的問題爲你。

+0

我進入你所提供的代碼,並沒有影響到視圖。它看起來像一個普通的UITextView。它應該這樣做嗎?我是與CALayers等合作的新手,所以我不確定所有事情應該如何協同工作。 – Halen

+0

這段代碼與通用的'UIView'一起工作,但奇怪的不是'UITextView'。我不知道爲什麼。爲了解決您的問題,您可以簡單地將UITextView添加到相同大小的UIView中,並將該陰影添加到UIView對象。 –

+0

好的。感謝您的澄清。 – Halen

0

根據25 iOS performance tips & tricks,通過設置shadowOffset添加陰影是一項昂貴的操作,會影響性能。

核心動畫要做的屏幕外通首先確定你的觀點的 準確形狀,然後才能呈現陰影效果, 是一個相當昂貴的操作。

,您可以改用:

myTextView.layer.shadowPath = [[UIBezierPath bezierPathWithRect:view.bounds] CGPath];