130 votes

Comment puis-je prendre un UIImage et lui donner une bordure noire?

Comment puis-je définir la bordure d'un UIImage ?

244voto

mclin Points 2490

Avec OS> 3.0, vous pouvez le faire:

 //you need this import
#import <QuartzCore/QuartzCore.h>

[imageView.layer setBorderColor: [[UIColor blackColor] CGColor]];
[imageView.layer setBorderWidth: 2.0];
 

70voto

Marcus S. Zarra Points 32178

Vous pouvez le faire en créant une nouvelle image (également répondu dans votre autre publication de cette question):

 - (UIImage*)imageWithBorderFromImage:(UIImage*)source;
{
  CGSize size = [source size];
  UIGraphicsBeginImageContext(size);
  CGRect rect = CGRectMake(0, 0, size.width, size.height);
  [source drawInRect:rect blendMode:kCGBlendModeNormal alpha:1.0];

  CGContextRef context = UIGraphicsGetCurrentContext();
  CGContextSetRGBStrokeColor(context, 1.0, 0.5, 1.0, 1.0); 
  CGContextStrokeRect(context, rect);
  UIImage *testImg =  UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();
  return testImg;
}
 

Ce code produira une bordure rose autour de l'image. Cependant, si vous voulez simplement afficher la bordure, utilisez le calque de UIImageView et définissez sa bordure.

38voto

RockStar Points 722
 #import <QuartzCore/CALayer.h>


UIImageView *imageView = [UIImageView alloc]init];
imageView.layer.masksToBounds = YES;
imageView.layer.borderColor = [UIColor blackColor].CGColor;
imageView.layer.borderWidth = 1;    
 

Ce code peut être utilisé pour ajouter UIImageView view border.

11voto

ScorpionKing2k5 Points 721

Si vous connaissez les dimensions de votre image, puis ajout d'une bordure à l'UIImageView de la couche est la meilleure solution autant que je sache. En effet, vous pouvez tout simplement setFrame votre imageView x,y,image.taille.largeur de l'image.taille.hauteur

Dans le cas où vous avez une ImageView de taille fixe avec des images chargées dynamiquement qui se redimensionnée (ou mise à l'échelle pour AspectFit), votre objectif est de redimensionner l'imageview à la nouvelle image redimensionnée.

Le chemin le plus court pour ce faire:

// containerView is my UIImageView
containerView.layer.borderWidth = 7;
containerView.layer.borderColor = [UIColor colorWithRed:0.22 green:0.22 blue:0.22 alpha:1.0].CGColor;

// this is the key command
[containerView setFrame:AVMakeRectWithAspectRatioInsideRect(image.size, containerView.frame)];

Mais l'utilisation de la AVMakeRectWithAspectRatioInsideRect, vous devez ajouter cette

#import <AVFoundation/AVFoundation.h>

instruction d'importation de votre fichier et comprennent également la AVFoundation cadre de votre projet (fourni avec le SDK).

8voto

Andrew Johnson Points 4758

Vous ne pouvez pas ajouter une bordure, mais cela fonctionnerait pour le même effet. Dans cet exemple, vous pouvez également utiliser UIView appelé blackBG dans un UIImageView avec une image de bordure et un milieu vierge, puis vous aurez une bordure d'image personnalisée au lieu de simplement du noir.

 UIView *blackBG = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)];

blackBG.backgroundColor = [UIColor blackColor];

UIImageView *myPicture = [[UIImageView alloc] initWithImage:
                          [UIImage imageNamed: @"myPicture.jpg"]];

int borderWidth = 10;

myPicture.frame = CGRectMake(borderWidth,
                             borderWidth,
                             blackBG.frame.size.width-borderWidth*2,
                             blackBG.frame.size.height-borderWidth*2)];

[blackBG addSubview: myPicture];
 

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