2013-09-16 1 views
2

Comme je ne trouve pas de questions/réponses pour cela, j'imagine que ce n'est pas possible.Définition de plusieurs bordures sur UIView

Y at-il de toute façon pour définir plusieurs bordures sur un UIView.

Je suis en train de définir une bordure standard avec .layer.borderWidth et layer.borderColor. Je me demande si je peux ajouter un effet de multiples coups/frontières à la vue.

J'ai besoin d'une bordure de 4.0f en blanc puis d'une autre 1.0f d'une autre couleur.

Répondre

2

Trois solutions que je peux penser:

  • imbriquer un UIView dans un autre, définir une frontière pour chacun; Dessinez vous-même la bordure dans -(void)drawRect;
  • ;
  • ; Utiliser un UIImageView avec une taille redimensionnable; image extensible de vos frontières en arrière-plan (la meilleure solution en termes de performances).
1

Ce n'est pas possible, vous devrez fausser les bordures en ajoutant UIView avec une couleur de fond à votre xib/affichage.

1

Cela n'est pas possible avec une seule instance UIView sans ajouter de couches. Ce que vous pouvez faire est de créer une vue qui est plus grande que nécessaire, définir sa bordure de manière appropriée, puis ajouter un CALayer et le positionner là où vous voulez la bordure intérieure et définir ses propriétés de bordure de façon appropriée.

L'utilisation CALayers est généralement plus rapide que complète soufflé UIView, mais vous pouvez aussi avoir juste un UIView imbriqué pour obtenir le même effet.

0

Essayez ceci,

J'ajoute l'ombre avec alpha 1 qui agira comme la frontière intérieure. Et la bordure normale est donnée comme bordure extérieure.

yourView.frame = CGRectInset(yourView.frame, -borderWidth, -borderWidth); 
yourView.layer.borderColor = [UIColor blackColor].CGColor; 
yourView.layer.borderWidth = borderWidth; 


yourView.layer.shadowColor = [UIColor whiteColor].CGColor; 
yourView.layer.shadowOffset = CGSizeMake(0, 1); 
yourView.layer.shadowOpacity = 1; 
yourView.layer.shadowRadius = 1.0; 
yourView.clipsToBounds = YES; 
Questions connexes