Граница CALayer появляется над подвидом (я думаю, это связано с Z-порядком)

Я искал, но не смог найти причину такого поведения.

У меня есть UIButton, изображение которого я устанавливаю. Вот как должна выглядеть кнопка. Обратите внимание, что это всего лишь фотошоп предполагаемого дизайна кнопки:

enter image description here

По сути, это квадратная пользовательская кнопка UIButton с белой рамкой и небольшой тенью вокруг. В правом верхнем углу есть метка «X», которая будет добавлена ​​программно как подвид.

Вот скриншот кнопки в реальном приложении. На данный момент я добавил только тень и метку X в качестве подпредставления:

enter image description here

Как, когда я пытаюсь добавить белую рамку, вот как это выглядит:

enter image description here

Кажется, что белая рамка появляется над подслоем метки 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. Есть ли способ получить желаемый эффект?

Спасибо!

15
задан kurisukun 28 March 2012 в 05:25
поделиться