Гаразд, вже прийнята відповідь, але я думаю, що є кращий спосіб це зробити, вам просто потрібно мати новий шар трохи більший, ніж ваш вигляд, і не маскувати його до меж шару вигляду (що насправді є поведінка за замовчуванням). Ось зразок коду:
CALayer * externalBorder = [CALayer layer];
externalBorder.frame = CGRectMake(-1, -1, myView.frame.size.width+2, myView.frame.size.height+2);
externalBorder.borderColor = [UIColor blackColor].CGColor;
externalBorder.borderWidth = 1.0;
[myView.layer addSublayer:externalBorder];
myView.layer.masksToBounds = NO;
Звичайно, це якщо ви хочете, щоб ваша межа була на 1 одиницю більшою, якщо ви хочете більше, ви відповідно адаптуєте borderWidth
і рамку шару. Це краще, ніж використовувати другий вигляд трохи більший, оскільки a CALayer
світліший за a, UIView
і вам не потрібно змінювати фрейм myView
, що добре, наприклад, якщо myView
єUIImageView
Примітка: Для мене результат не був ідеальним на тренажері (шар не був точно в потрібному положенні, тому шар іноді був товщі з одного боку), але був саме тим, що просять на реальному пристрої.
РЕДАГУВАТИ
Насправді проблема, про яку я говорю в НБ, полягала лише в тому, що я зменшив екран тренажера, при нормальних розмірах проблеми абсолютно немає
Сподіваюся, це допоможе