web-dev-qa-db-fra.com

image dans le cadre du cercle iOS

j'ai uitableview avec une liste de contacts. Je voudrais avoir l'image de chaque contact dans un cadre circulaire comme dans l'écran de connexion des non-conformistes. Des suggestions sur la façon de procéder dans une uitableviewCell?

enter image description here

22
jonas vermeulen

Je suppose que vous avez votre imageView à l'intérieur de votre cellule, donc ce que vous avez à faire pour avoir le même effet est d'utiliser une bordure invisible. Utilisez ce code pour créer cet effet:

cell.yourImageView.layer.cornerRadius = cell.yourImageView.frame.size.height /2;
cell.yourImageView.layer.masksToBounds = YES;
cell.yourImageView.layer.borderWidth = 0;

Votre UIImageView doit avoir la même hauteur et la même largeur, vous devez également importer le framework quartzCore dans votre projet

76
Mirko Catalano

apparemment je peux faire un rectangle arrondi comme celui-ci

float fw, fh;
if (ovalWidth == 0 || ovalHeight == 0) {
    CGContextAddRect(context, rect);
    return;
}
CGContextSaveGState(context);
CGContextTranslateCTM (context, CGRectGetMinX(rect), CGRectGetMinY(rect));
CGContextScaleCTM (context, ovalWidth, ovalHeight);
fw = CGRectGetWidth (rect) / ovalWidth;
fh = CGRectGetHeight (rect) / ovalHeight;
CGContextMoveToPoint(context, fw, fh/2);
CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);
CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1);
CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1);
CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1);
CGContextClosePath(context);
CGContextRestoreGState(context);

puis mettez l'image à l'intérieur, elle sera automatiquement découpée:

 CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
addRoundedRectToPath(context, self.frame, 10, 10);
CGContextClip(context);
[image drawInRect:self.frame];
CGContextRestoreGState(context);
1
jonas vermeulen