Wie kann ich den Rand eines UIImage
?
Das habe ich schließlich getan; ich verschachtelte meine UIImageView
in der Mitte eines etwas grösseren UIView
der Farbe meines Rahmens.
Wie kann ich den Rand eines UIImage
?
Sie können keinen Rahmen hinzufügen, aber das würde den gleichen Effekt erzielen. Sie könnten auch die UIView namens blackBG in diesem Beispiel in eine UIImageView mit einem Randbild und einer leeren Mitte umwandeln, und dann hätten Sie einen benutzerdefinierten Bildrand anstelle von nur schwarz.
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];
Alle diese Antworten funktionieren gut, ABER fügen Sie ein Rect zu einem Bild hinzu. Angenommen, Sie haben eine Form (in meinem Fall einen Schmetterling) und möchten einen Rahmen hinzufügen (einen roten Rahmen):
brauchen wir zwei Schritte: 1) das Bild nehmen, in CGImage konvertieren, an eine Funktion zum Zeichnen außerhalb des Bildschirms in einem Kontext mit CoreGraphics übergeben und ein neues CGImage zurückgeben
2) zurück nach uiimage konvertieren und zeichnen:
// remember to release object!
+ (CGImageRef)createResizedCGImage:(CGImageRef)image toWidth:(int)width
andHeight:(int)height
{
// create context, keeping original image properties
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, width,
height,
8
4 * width,
colorspace,
kCGImageAlphaPremultipliedFirst
);
CGColorSpaceRelease(colorspace);
if(context == NULL)
return nil;
// draw image to context (resizing it)
CGContextSetInterpolationQuality(context, kCGInterpolationDefault);
CGSize offset = CGSizeMake(2,2);
CGFloat blur = 4;
CGColorRef color = [UIColor redColor].CGColor;
CGContextSetShadowWithColor ( context, offset, blur, color);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), image);
// extract resulting image from context
CGImageRef imgRef = CGBitmapContextCreateImage(context);
CGContextRelease(context);
return imgRef;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
CGRect frame = CGRectMake(0,0,160, 122);
UIImage * img = [UIImage imageNamed:@"butterfly"]; // take low res OR high res, but frame should be the low-res one.
imgV = [[UIImageView alloc]initWithFrame:frame];
[imgV setImage: img];
imgV.center = self.view.center;
[self.view addSubview: imgV];
frame.size.width = frame.size.width * 1.3;
frame.size.height = frame.size.height* 1.3;
CGImageRef cgImage =[ViewController createResizedCGImage:[img CGImage] toWidth:frame.size.width andHeight: frame.size.height ];
imgV2 = [[UIImageView alloc]initWithFrame:frame];
[imgV2 setImage: [UIImage imageWithCGImage:cgImage] ];
// release:
if (cgImage) CGImageRelease(cgImage);
[self.view addSubview: imgV2];
}
Ich habe einen normalen Schmetterling und einen rot umrandeten größeren Schmetterling hinzugefügt.
Sie können der UIImageView einen Rahmen hinzufügen und dann die Größe der UIimageView entsprechend der Bildgröße ändern:
#import <QuartzCore/QuartzCore.h>
// adding border to the imageView
[imageView.layer setBorderColor: [[UIColor whiteColor] CGColor]];
[imageView.layer setBorderWidth: 2.0];
// resize the imageView to fit the image size
CGSize size = [image size];
float factor = size.width / self.frame.size.width;
if (factor < size.height / self.frame.size.height) {
factor = size.height / self.frame.size.height;
}
CGRect rect = CGRectMake(0, 0, size.width/factor, size.height/factor);
imageView.frame = rect;
Stellen Sie sicher, dass Sie den Ursprung der imageView auf die Mitte setzen
Wird es mit einer unterschiedlichen Größe der Bilder, die auf der Fliege ändern zu arbeiten? Die UIImageView wird die ganze Zeit ändern, und die UIView? p.s. Manipulieren Sie das Bild selbst wird groß sein.
Sie müssten den Rahmen der enthaltenden Ansicht zusammen mit dem Bild anpassen - Sie könnten die Zentrierungseigenschaften für beide Ansichten speichern, die Bildgröße anpassen, die Containergröße anpassen und dann die Zentrierungseigenschaften für beide neu einstellen.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
Durch Zufall, wenn jemand durch eine Google-Suche zu hören (wie ich) und sind auf der Suche nach dem Hinzufügen einer Grenze zu UIImageView, suchen Sie nach der Antwort von @mclin am unteren Rand. Funktioniert prima!