2

我在 Stack Overflow 上搜索了苹果的文档和其他帖子,但我仍然无法在 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;

我哪里错了?

4

2 回答 2

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;

然后,您可以将其他属性一一添加,看看是什么导致了您的问题。

于 2012-06-16T22:19:39.370 回答
0

根据25 个 iOS 性能提示和技巧,通过设置 shadowOffset 添加阴影是一项昂贵的操作并且会影响性​​能。

Core Animation 必须先进行屏幕外传递,才能在渲染投影之前确定视图的确切形状,这是一项相当昂贵的操作。

您可以改用:

myTextView.layer.shadowPath = [[UIBezierPath bezierPathWithRect:view.bounds] CGPath];
于 2014-03-27T16:37:37.400 回答