17

検索しましたが、この動作の理由を見つけることができませんでした。

イメージを設定している UIButton があります。ボタンの表示方法は次のとおりです。これは、意図したボタン デザインのフォトショップに過ぎないことに注意してください。

ここに画像の説明を入力

基本的に、これは白い境界線と周囲の小さな影を持つ正方形のカスタム UIButton です。右上隅に「X」マークがあり、プログラムによってサブビューとして追加されます。

これは、実際のアプリ内のボタンのスクリーンショットです。この時点で、サブビューとして影と X マークのみを追加しました。

ここに画像の説明を入力

白い境界線を追加しようとすると、次のようになります。

ここに画像の説明を入力

X マーク サブレイヤーの上に白い枠線が表示されているようです。どうしてか分かりません。

私が使用しているコードは次のとおりです。

// selectedPhotoButton is the UIButton with UIImage set earlier
// At this point, I am adding in the shadow
[selectedPhotoButton layer] setShadowColor:[[UIColor lightGrayColor] CGColor]];
[[selectedPhotoButton layer] setShadowOffset: CGSizeMake(1.0f, 1.0f)];
[[selectedPhotoButton layer] setShadowRadius:0.5f];
[[selectedPhotoButton layer] setShadowOpacity:1.0f]; 

// Now add the white border    
[[selectedPhotoButton layer] setBorderColor:[[UIColor whiteColor] CGColor]];
[[selectedPhotoButton layer] setBorderWidth:2.0];

// Now add the X mark subview
UIImage *deleteImage = [UIImage imageNamed:@"nocheck_photo.png"];
UIImageView *deleteMark = [[UIImageView alloc] initWithFrame:CGRectMake(53, -5, 27, 27)];
deleteMark.contentMode = UIViewContentModeScaleAspectFit;
[deleteMark setImage:deleteImage];
[selectedPhotoButton addSubview:deleteMark];
[deleteMark release];

deleteMark サブビューの上に境界線が表示される理由がわかりません。意図した効果を得る方法はありますか?

ありがとうございました!

4

3 に答える 3

18

AppleのドキュメントからCALayer

境界線は、borderWidthによって受信者の境界線からはめ込まれて描画されます。これは、レシーバーのコンテンツとサブレイヤーの上に合成され、cornerRadiusプロパティの効果が含まれています。

必要な効果を得るには、画像を独自のサブビュー/サブレイヤーに配置し、そのサブレイヤーのborderWidthプロパティを設定することをお勧めします。

于 2012-03-28T07:35:09.067 に答える