Comment puis-je définir la bordure d'un UIImage
?
Réponses
Trop de publicités?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.
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).
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];