130 Stimmen

Wie kann ich ein UII-Bild mit einem schwarzen Rand versehen?

Wie kann ich den Rand eines UIImage ?

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!

244voto

mclin Punkte 3579

Mit OS > 3.0 können Sie dies tun:

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

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

1 Stimmen

Wenn ich die Bilder in der obigen imageView anpasse, wird das Bild perfekt angezeigt, aber die Seiten des Bildes bleiben leer, und dasselbe passiert mit dem oberen und unteren Teil des Bildes, wenn das Bild im Querformat ist. Der leere Raum sieht hässlich aus, wenn der Rahmen auf ihn eingestellt ist. Hatten Sie dieses Problem schon einmal? Wenn ja, schlagen Sie bitte eine Methode zur Lösung dieses Problems vor.

0 Stimmen

@Hamutsi imageView.image = myImage;

6 Stimmen

Ja, das können Sie. Instanzen von UIImage kann mit CoreGraphics in einen Grafikkontext gezeichnet werden.

70voto

Marcus S. Zarra Punkte 46405

Sie können dies tun, indem Sie ein neues Bild erstellen (auch in Ihrem anderen Beitrag zu dieser Frage beantwortet):

- (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;
}  

Dieser Code erzeugt einen rosa Rahmen um das Bild. Wenn Sie jedoch nur den Rahmen anzeigen möchten, verwenden Sie die Ebene des UIImageView und legen Sie den Rand fest.

0 Stimmen

Wie legen Sie die Breite des gewünschten Rahmens fest?

0 Stimmen

@MarcusS.Zarra Ich weiß, dass es sie noch nicht gab, als diese Frage beantwortet wurde, aber diese Lösung berücksichtigt nicht das Retina-Display. Wenn Sie sie überarbeiten könnten, wäre ich Ihnen sehr dankbar :)

0 Stimmen

@lukech Das Muster muss nicht überarbeitet werden. Erhöhen Sie einfach die Linienbreite, wenn Sie ein Retina-Gerät verwenden.

38voto

Faizan Refai Punkte 833
#import <QuartzCore/CALayer.h>

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

Dieser Code kann verwendet werden, um Folgendes hinzuzufügen UIImageView Ansicht Grenze.

0 Stimmen

Perfekt! Sie müssen sich nicht mit CGImage herumschlagen. (Ich brauchte das Bild nicht mit dem Rand zu speichern). Vielen herzlichen Dank!

13voto

Bijendra Singh Punkte 559
imageView_ProfileImage.layer.cornerRadius =10.0f;
imageView_ProfileImage.layer.borderColor = [[UIColor blackColor] CGColor];
imageView_ProfileImage.layer.borderWidth =.4f;
imageView_ProfileImage.layer.masksToBounds = YES;

0 Stimmen

Genialer Hack, vor allem wenn es um die Speichernutzung geht - die anderen Antworten benötigen das Doppelte an Speicherplatz, nur um den Rahmen kurzzeitig hinzuzufügen. Pro-Tipp - Wenn Sie schauen, um nur einen Rahmen auf einer Seite hinzufügen, dann können Sie die Grenzen zu ändern. Tolle Antwort!

11voto

ScorpionKing2k5 Punkte 2441

Wenn Sie die Abmessungen Ihres Bildes kennen, dann ist das Hinzufügen eines Rahmens zur Ebene von UIImageView die beste Lösung (AFAIK). In der Tat, können Sie einfach setFrame Ihre imageView zu x,y,image.size.width,image.size.height

Wenn Sie eine ImageView mit fester Größe und dynamisch geladenen Bildern haben, die in der Größe verändert werden (oder auf AspectFit skaliert werden), dann ist es Ihr Ziel, die Größe der ImageView an das neue Bild anzupassen.

Das ist der kürzeste Weg, dies zu tun:

// 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)];

Aber um AVMakeRectWithAspectRatioInsideRect zu verwenden, müssen Sie Folgendes hinzufügen

#import <AVFoundation/AVFoundation.h>

import-Anweisung in Ihre Datei ein und binden Sie auch das AVFoundation-Framework in Ihr Projekt ein (wird mit dem SDK mitgeliefert).

0 Stimmen

Danke @rafinskipg ! Sehr geschätzt.

CodeJaeger.com

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.

Powered by:

X