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;

次に、他のプロパティを1つずつ追加して、問題の原因を確認できます。

于 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 に答える