1

取り囲む UIView が影と角の半径を同時に持つにはどうすればよいですか?

SOで提案された他のソリューションを何度も試しましたが、残念ながらiOS6では機能しないようです(少なくとも私にとってはそうではありません)

だから私はこれを投稿するかもしれないと思ったので、iOS6 ソリューションを見つけることができます。

UIView2 つのサブビューを含むコンテナがあります

- a custom UIImageView
- a custom UIView

UIView 全体の角の半径を 2.5 にしたいのですが、UIView にも影を付けたいと思います。ただし、これまでのところ、これら 2 つの欲求のうち 1 つしか得られず、両方を同時に得ることはありません。

これが私のコードです。SOソリューションでさまざまな試みを行ったさまざまなバージョンがありますが、これは私のバージョンの1つにすぎません。

    self.layer.shouldRasterize = YES;
    self.layer.rasterizationScale = [UIScreen mainScreen].scale;
    self.layer.cornerRadius = 2.5;
    self.layer.masksToBounds = YES;
    self.layer.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.1].CGColor; //0.1
    self.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.bounds].CGPath;
    self.layer.shadowOpacity = 1.0;
    self.layer.shadowRadius = 3.0;

^ selfは、上記の 2 つのサブビューを含むカスタム UIView です。

この問題に対する iOS6 の解決策を知っている人はいますか?


アップデート

なので、枠の色はいらないので、解決策を見たときは追加していなかったのですが、今回は下のコメントの解決策を使って追加したところ、UIViewが丸くなっているように見えますが、本当に結合した UIImageView と UIView を丸めたい。

基本的に、UIImageView が上にあり、UIView が下にあります。

では、UIImageView の上部のみを丸め、UIView の下部のみを丸めるにはどうすればよいでしょうか。

ありがとう。

注: 影は 1 つのオブジェクト全体として機能しますが、角の半径は 1 つのオブジェクト全体として機能しませんか?

4

2 に答える 2

2

このコード行を変更する必要があると思います。

self.layer.masksToBounds = YES;

これに

self.layer.masksToBounds = NO;

maskToBounds を YES に設定すると、ビューの境界を超えるものは表示されなくなります。これは影の場合です。

このコードは私の現在のプロジェクト (iOS 6) のもので、正常に動作します。丸みを帯びた角と影の両方が見えます。

self.layer.masksToBounds = NO;
self.layer.cornerRadius = 5.0;
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowOffset = CGSizeMake(0, -1);
self.layer.shadowOpacity = 0.6;

UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect: self.layer.bounds];
self.layer.shadowPath = shadowPath.CGPath;
于 2013-05-28T20:31:34.297 に答える