Sous-vue apparaît sous superviews layer.border?

J'ai un UIView dans lequel je définis sa frontière de la manière suivante:

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

J'attache une sous-vue à cette UIView , et quand je déplace la sous-vue au-dessus de la frontière, elle passe dessous. Est-ce le comportement voulu? Y a-t-il un moyen de faire passer la sous-vision par-dessus?

Selon la spécification d'Apple : It is composited above the receiver's contents and sublayers.

Ainsi, la bordure sera toujours au-dessus de toutes vos sous-vues, même si vous apportez votre sous-vue à l'avant et ainsi de suite.

Donc, je fais une vue en arrière-plan pour simuler la frontière.

Par exemple:

 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]; 

et l'effet:

entrez la description de l'image ici

Avez-vous essayé de définir la propriété 'clipsToBounds' de superview sur YES? Par défaut, cette option est définie sur NO pour des raisons de performances, mais si vous la définissez sur yes, cela pourrait vous donner l'effet que vous searchz.

Selon la structure de votre vue, il peut être plus facile d'append la sous-vue au parent de votre vue principale. Il peut alors chevaucher la vue principale et recouvrir la bordure comme vous l'avez demandé.