我在Stack Overflow上搜索了Apple的文档和其他帖子,但是我仍然无法在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;
我哪里错了?
答案 0 :(得分: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 :(得分:0)
根据25 iOS performance tips & tricks,通过设置shadowOffset添加阴影是一项昂贵的操作,会影响性能。
核心动画必须先进行屏幕外传递才能确定 视图的精确形状,然后才能渲染投影 是一项相当昂贵的行动。
您可以改为使用:
myTextView.layer.shadowPath = [[UIBezierPath bezierPathWithRect:view.bounds] CGPath];