見つけたすべての方法を試してみましたが、うまくいきませんでした。角が丸いラベル、背景パターンのあるドロップ シャドウを作成したいだけです。影は、角を丸くしたくない場合にのみ機能します。両方揃えられない!
シャドウを使用したコードは次のとおりです。
label.text = msg;
label.textAlignment = UITextAlignmentCenter;
label.frame = CGRectMake(20,10,280,40);
label.backgroundColor
= [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"msg_box_bg.png"]];
[label.layer setCornerRadius:10];
[label.layer setMasksToBounds:NO];
/* Shadow */
label.layer.shadowColor = [UIColor blackColor].CGColor;
label.layer.shadowOpacity = 0.6;
label.layer.shadowOffset = CGSizeMake(0,0);
label.layer.shadowRadius = 3;
これにより、丸みを帯びた角のない影が得られます。しかし、私が使用する場合
[label.layer setMasksToBounds:YES];
これにより、影のない丸みを帯びた角が得られます。シャドウ パスを使用するようアドバイスを受けたので、シャドウ パスを含むコードは次のようになります。
label.text = msg;
label.textAlignment = UITextAlignmentCenter;
label.frame = CGRectMake(20,10,280,40);
label.backgroundColor
= [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"msg_box_bg.png"]];
[label.layer setCornerRadius:10];
[label.layer setMasksToBounds:YES];
/* Shadow */
label.layer.shadowColor = [UIColor blackColor].CGColor;
label.layer.shadowOpacity = 0.6;
label.layer.shadowOffset = CGSizeMake(0,0);
label.layer.shadowRadius = 3;
label.layer.shadowPath = [[UIBezierPath bezierPathWithRoundedRect:label.frame cornerRadius:10]CGPath];
label.layer.shouldRasterize = YES;
このコードは角を丸くしますが、影はありません。助言がありますか?
ありがとう!