像UITextField一样隐藏UITextview

时间:2012-06-16 22:10:58

标签: objective-c ios uitextfield uitextview

我在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;

我哪里错了?

2 个答案:

答案 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];