Quiero aplicar dos tipos de frontera en un UIImageView:

  1. Uno es la frontera en la layer de la UIImageView.
  2. Segundo es el borde alrededor de la layer de la UIImageView.

¿Cómo puedo hacer esto?

InformationsquelleAutor Girish | 2012-06-25

3 Comentarios

  1. 32

    Intentar

    #define kBorderWidth 3.0
    #define kCornerRadius 8.0
    CALayer *borderLayer = [CALayer layer];
    CGRect borderFrame = CGRectMake(0, 0, (imageView.frame.size.width), (imageView.frame.size.height));
    [borderLayer setBackgroundColor:[[UIColor clearColor] CGColor]];
    [borderLayer setFrame:borderFrame];
    [borderLayer setCornerRadius:kCornerRadius];
    [borderLayer setBorderWidth:kBorderWidth];
    [borderLayer setBorderColor:[[UIColor redColor] CGColor]];
    [imageView.layer addSublayer:borderLayer];

    Y no te olvides de importación QuartzCore/QuartzCore.h

    Este ejemplo se dibuja una frontera en la capa, pero el cambio es marco ligeramente para hacer que el borde de la capa.

    • Gracias por su respuesta.He probado este código pero crear frontera, dentro del UIImageView pero quiero establecer la frontera desde fuera de UIImageView.
    • Acaba de cambiar el marco de referencia a la cantidad de ‘afuera’ que te gusta: CGRect borderFrame = CGRectMake(-1.0, -1.0, imageView.marco.tamaño.ancho+2.0, imageView.marco.tamaño.altura+2.0);
    • Asegúrese de establecer clipsToBounds a false, si usted está tratando de poner la frontera exterior de la imageView
    • ¿Qué acerca de circular imágenes, donde tienes que habilitar clipToBounds?
  2. 8

    Otra manera

    Debe importar

    #import <QuartzCore/QuartzCore.h>

    A continuación, agregue el código para su UIImageView

    imgView.clipsToBounds = YES;
    imgView.layer.cornerRadius = 8.0;
    imgView.layer.borderWidth = 2.0;
    imgView.layer.borderColor = [UIColor greenColor].CGColor;
    • Esto no funciona.
    • Que crea una capa de frontera, el OP pregunta para los dos.
    • simple y elegante. la solución perfecta
  3. 2

    Otra forma es agregar otra capa que va un poco fuera de la UIImageView de la capa así :

    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;

Dejar respuesta

Please enter your comment!
Please enter your name here