J'essaie d'ajouter une bordure courbe autour d'une image téléchargée et d'être affichée dans un UITableViewCell.SDK iPhone: Rendu d'une CGLayer dans un objet image
Dans la grande vue (par exemple une image sur l'écran) Je donne les résultats suivants:
productImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:product.image]];
[productImageView setAlpha:0.4];
productImageView.frame = CGRectMake(10.0, 30.0, 128.0, 128.0);
CALayer *roundedlayer = [productImageView layer];
[roundedlayer setMasksToBounds:YES];
[roundedlayer setCornerRadius:7.0];
[roundedlayer setBorderWidth:2.0];
[roundedlayer setBorderColor:[[UIColor darkGrayColor] CGColor]];
[self addSubview:productImageView];
Dans la vue de table cellulaire, pour l'obtenir pour faire défiler rapidement, une image doit être dessiné dans le drawRect méthode d'un UIView qui est ensuite ajouté à une cellule personnalisée.
donc dans drawRect
- (void)drawRect:(CGRect)rect {
...
point = CGPointMake(boundsX + LEFT_COLUMN_OFFSET, UPPER_ROW_TOP);
//CALayer *roundedlayer = [productImageView layer];
//[roundedlayer setMasksToBounds:YES];
//[roundedlayer setCornerRadius:7.0];
//[roundedlayer setBorderWidth:2.0];
//[roundedlayer setBorderColor:[[UIColor darkGrayColor] CGColor]];
//[productImageView drawRect:CGRectMake(boundsX + LEFT_COLUMN_OFFSET, UPPER_ROW_TOP, IMAGE_WIDTH, IMAGE_HEIGHT)];
//
[productImageView.image drawInRect:CGRectMake(boundsX + LEFT_COLUMN_OFFSET, UPPER_ROW_TOP, IMAGE_WIDTH, IMAGE_HEIGHT)];
Alors cela fonctionne bien, mais si je retire le commentaire et essaie de montrer la couche CA arrondi le défilement va vraiment lent.
Pour résoudre ce problème, je suppose que je dois rendre ce contexte d'image dans un autre objet image, et le stocker dans un tableau, puis définir cette image comme quelque chose comme:
productImageView.image = (UIImage*)[imageArray objectAtIndex:indexPath.row];
Ma question est « Comment est-ce que je rends cette couche dans une image? " TIA.
La solution est quelque chose comme ... UIGraphicsBeginImageContext (imageView.bounds.size); [self.layer renderInContext: UIGraphicsGetCurrentContext()]; UIImage * viewImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); mais cela nécessite que l'image soit d'abord affichée sur l'écran. Pas tout à fait ce que je cherche. – user279778
Ceci est très proche de la réponse dont j'ai besoin ... http://blog.sallarp.com/iphone-uiimage-round-corners/ – user279778