J'ai vu dans l'inspecteur que je peux changer la couleur d'arrière-plan, mais j'aimerais aussi changer la couleur de la bordure et de l'épaisseur, est-ce possible?
Merci
J'ai vu dans l'inspecteur que je peux changer la couleur d'arrière-plan, mais j'aimerais aussi changer la couleur de la bordure et de l'épaisseur, est-ce possible?
Merci
Vous avez besoin d'utiliser la vue de la couche de définir la frontière de la propriété. e.g:
#import <QuartzCore/QuartzCore.h>
...
view.layer.borderColor = [UIColor redColor].CGColor;
view.layer.borderWidth = 3.0f;
Vous avez également besoin de lien avec QuartzCore.cadre pour accéder à cette fonctionnalité.
Lorsque j'utilise Vladimir CALayer solution, et sur la vue que j'ai une animation, comme un modal UINavigationController de le renvoyer, je vois beaucoup de pépins qui se passe et d'avoir le dessin des problèmes de performances.
Donc, une autre façon d'atteindre cet objectif, mais sans les pépins et la perte de performances, est de faire un custom UIView et de mettre en œuvre l' drawRect
message comme ceci:
- (void)drawRect:(CGRect)rect
{
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(contextRef, 1);
CGContextSetRGBStrokeColor(contextRef, 255.0, 255.0, 255.0, 1.0);
CGContextStrokeRect(contextRef, rect);
}
Je ne dirais pas substitution de la drawRect en raison de provoquer un gain de performance.
Au lieu de cela, je voudrais modifier les propriétés de la classe comme ci-dessous (dans votre personnalisé uiview):
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.layer.borderWidth = 2.f;
self.layer.borderColor = [UIColor redColor].CGColor;
}
return self;
Je ne vois pas de saccades lors de la prise d'approche ci-dessus - ne sais pas pourquoi la mettre dans le initWithFrame s'arrête là ;-)
Si vous ne souhaitez pas modifier la couche d'un UIView, vous pouvez toujours intégrer la vue dans un autre point de vue. La vue parent aurait sa couleur d'arrière-plan définie à la couleur de la bordure. Il serait également légèrement plus grande, en fonction de la largeur que vous voulez à la frontière.
Bien sûr, cela ne fonctionne que si votre point de vue n'est pas transparent et vous ne souhaitez qu'une seule couleur de la bordure. L'OP voulait la frontière, dans la vue elle-même, mais cela peut être une alternative viable.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.