6

ここのリンクと同じ問題があります: コーナー半径と影を追加できません

maskToBounds = YESとすると、角は丸くなりますが、影はありません。maskToBounds = NOとすると、影は出ますが、角は丸くなりません。

次に、上記のリンクの指示に従い、maskToBounds = NOを設定します。「むしろ、角の半径を設定し、丸みを帯びた長方形で影のベジェパスを設定します。2つの半径を同じに保ちます」。しかし、その後、私は角を曲がったり、影を付けたりしませんでした!(つまり、影のない正方形の画像)これから私を助けてくれませんか?何を間違えたのかわかりません。前もって感謝します。

self.userImageView.backgroundColor = [UIColor redColor]; 
self.userImageView.clipsToBounds = NO; 
self.userImageView.contentMode = UIViewContentModeCenter; 
self.userImageView.layer.masksToBounds = NO; 

self.userImageView.layer.borderWidth = 1; 
self.userImageView.layer.borderColor = [[UIColor grayColor] CGColor]; 

self.userImageView.layer.shadowOpacity = 1; 
self.userImageView.layer.shadowColor = [[UIColor blackColor] CGColor]; 
self.userImageView.layer.shadowRadius = 8.0f; 
self.userImageView.layer.shadowOffset = CGSizeMake(-3, 0);
self.userImageView.layer.shouldRasterize = YES; 

self.userImageView.layer.shadowPath = [[UIBezierPath bezierPathWithRoundedRect:[self.userImageView bounds] cornerRadius:10.0f] CGPath]; 

[self addSubview:self.userImageView]; 
4

1 に答える 1

20

残念ながら、UIImageViewが丸みを帯びた角と影を同時にサポートしているとは思いません。

ただし、UIImageViewのスーパービューでシャドウを作成することはできます。

CGFloat cornerRadius = 3.0

UIView *container = [[UIView alloc] initWithFrame:aRect];
container.layer.shadowOffset = CGSizeMake(0, 0);
container.layer.shadowOpacity = 0.8;
container.layer.shadowRadius = 5.0;
container.layer.shadowColor = [UIColor redColor].CGColor;
container.layer.shadowPath = [[UIBezierPath bezierPathWithRoundedRect:container.bounds cornerRadius:cornerRadius] CGPath];

self.userImageView.layer.cornerRadius = cornerRadius;
self.userImageView.layer.masksToBounds = YES;
self.userImageView.frame = container.bounds;
[container addSubview:self.userImageView];
[self addSubview:container];
于 2012-10-19T17:32:28.820 に答える