82 votes

Circulaire UIImageView dans UITableView sans gain de performance?

J'ai un UIImageView sur chacune de mes UITableView de cellules, et l'affichage à distance de l'image (à l'aide d' SDWebImage). J'ai fait quelques QuartzCore de la couche de style pour l'affichage de l'image, en tant que tel:

UIImageView *itemImageView = (UIImageView *)[cell viewWithTag:100];
    itemImageView.layer.borderWidth = 1.0f;
    itemImageView.layer.borderColor = [UIColor concreteColor].CGColor;
    itemImageView.layer.masksToBounds = NO;
    itemImageView.clipsToBounds = YES;

Alors maintenant, j'ai un carré 50x50 avec une légère bordure grise, mais je souhaiterais qu'il soit circulaire à la place des carrés. L'app Hemoglobe utilise circulaire images en vues de table, et que c'est l'effet que j'aimerais atteindre. Cependant, je ne veux pas utiliser cornerRadius, qui se dégrade de ma défilement FPS.

Voici Hemoglobe montrant circulaire UIImageViews:

enter image description here

Est-il possible d'obtenir cet effet? Merci.

142voto

tagabek Points 452

Il suffit de régler la cornerRadius à la moitié de la largeur ou de la hauteur (en supposant que votre objet est d'avis carrés).

Par exemple, si votre objet est d'avis sur la largeur et la hauteur sont à la fois 50:

itemImageView.layer.cornerRadius = 25;

38voto

yazh Points 64

Pour Ajouter une bordure

self.ImageView.layer.borderWidth = 3.0f;

self.ImageView.layer.borderColor = [UIColor whiteColor].CGColor;

De Forme Circulaire

self.ImageView.layer.cornerRadius = self.ImageView.frame.size.width / 2;
self.ImageView.clipsToBounds = YES;

Consultez ce lien

http://www.appcoda.com/ios-programming-circular-image-calayer/

14voto

shivam Points 541

Utilisez ce code.. Ce sera utile..

    UIImage* image = ...;
    UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, 1.0);
    // Add a clip before drawing anything, in the shape of an rounded rect
    [[UIBezierPath bezierPathWithRoundedRect:imageView.bounds
                                cornerRadius:50.0] addClip];
    // Draw your image
    [image drawInRect:imageView.bounds];

    // Get the image, here setting the UIImageView image
    imageView.image = UIGraphicsGetImageFromCurrentImageContext();

    // Lets forget about that we were drawing
    UIGraphicsEndImageContext();

Il fonctionne très bien pour moi. :)

7voto

iPatel Points 15121

Oui, il est possible de donner des layer.cornerRadius (besoin d'ajouter #import <QuartzCore/QuartzCore.h>)
pour créer circulaire aucun contrôle, mais dans votre cas, au lieu de set layer de UIImageView c'est Le La meilleure Façon de Créer Votre Image dans la circulaire et de l'ajouter sur UIImageView ont backGroundColor est ClearColor.

Consultez également ces Deux Source du code.

https://www.cocoacontrols.com/controls/circleview

et

https://www.cocoacontrols.com/controls/mhlazytableimages

Cela peut être utile dans votre cas:

1voto

iAhmed Points 489

https://github.com/bharath2020/UITableViewTricks

voici un exemple complet d'un projet. vous pouvez atteindre votre fonction requise ainsi que beaucoup d'autres. Cheers :)

Prograide.com

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.

Powered by:

X