Подтвердить что ты не робот

Subview появляется под надстройкой layer.border?

У меня есть UIView, в котором я определяю его border следующим образом:

    self.layer.borderColor = [UIColor blackColor].CGColor;
    self.layer.borderWidth = 3;

Я прикрепляю subview к этому UIView, и когда я перемещаю subview над границей, он идет под ним. Это предполагаемое поведение? В любом случае, чтобы сделать подзаголовок выше?

4b9b3361

Ответ 1

В соответствии с спецификация Apple: It is composited above the receiver’s contents and sublayers.

Таким образом, граница всегда будет выше всех ваших подзонов, даже если вы перейдете на передний план и т.д.

Итак, я делаю фоновый вид для подделки границы.

например:.

UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
backgroundView.backgroundColor = [UIColor blackColor];
backgroundView.clipsToBounds = NO;

UIView *bView = [[UIView alloc] initWithFrame:CGRectInset(backgroundView.bounds, 3, 3)];
bView.backgroundColor = [UIColor redColor];

UIView *cView = [[UIView alloc] initWithFrame:CGRectMake(-50, -50, 100, 100)];
cView.backgroundColor = [UIColor yellowColor];
[bView addSubview:cView];

[backgroundView addSubview:bView];

[self.window addSubview:backgroundView];

и эффект:

enter image description here

Ответ 2

Попробовал ли вы установить для свойства супервизора 'ClipToBounds' значение YES? По умолчанию для параметра "По умолчанию" установлено значение "НЕТ", но настройка его "да" может дать вам эффект, который вы ищете.

Ответ 3

В зависимости от структуры представления может быть проще добавить subview к родительскому вашего основного вида. Затем он может перекрывать основной вид и накладывать границу по вашему желанию.