2017-10-28 3 views
0

Ich habe eine UIView, die eine UIImageView drin hat.Circular UIImageView ist quadratisch auf einigen Geräten

ich die UIImageView gesetzt kreisförmig zu sein und einen Rahmen, um es wie folgt hinzu:

self.profilePicImageView.layer.cornerRadius = self.profilePicImageView.frame.size.height/2 
self.profilePicImageView.layer.masksToBounds = true 

self.profilePicImageView.layer.borderColor = UIColor.white.cgColor 
self.profilePicImageView.layer.borderWidth = 3 

Es aufgerufen wird, nachdem ich den Blick in meine viewController initialisieren und bevor ich es als eine Subview (Funktion setupUI() genannt hinzufügen).

Es funktioniert perfekt auf den meisten Geräten, aber auf den Großbildschirmen (iPhone 6/6s/7 Plus und iPhone X) bekomme ich die Grenze richtig, aber das Bild selbst ist nicht kreisförmig.

Bitte beachten Sie die Beispiele:

Regular iPhones:

Regular

Große iPhones (iPhone 6/6S/7 Plus und iPhone X):

Large

Irgendeine Idee, was das Problem sein kann und wie kann ich es beheben?

Danke !!

+0

@ FS.06 I'hd stellen auch diese Probleme, so fügen Sie den Code folgende Zeile self.profilePicImageView.contentMode = .scaleAspectFill self.profilePicImageView.clipsToBounds = true –

+0

@ FS.O6 bitte meine bearbeitete Antwort versuchen, es ist für mich arbeiten – SPatel

Antwort

0

Dies ist nur wegen Ihrer Content-Modus verschiedene contentMode wie

imageView.autoresizingMask = [.flexibleWidth, .flexibleHeight, .flexibleBottomMargin, .flexibleRightMargin, .flexibleLeftMargin, .flexibleTopMargin] 
imageView.contentMode = .scaleAspectFit // OR .scaleAspectFill 
imageView.clipsToBounds = true 
-1

Erstellen von benutzerdefinierten Image Klasse wie versuchen:

@IBDesignable class RoundedImageView:UIImageView { 
    @IBInspectable var borderColor:UIColor = UIColor.white { 
     willSet { 
      layer.borderColor = newValue.cgColor 
     } 
    } 
    override func layoutSubviews() { 
     super.layoutSubviews() 
     layer.cornerRadius = frame.height/2 
     layer.masksToBounds = true 
     layer.borderWidth = 1 
     layer.borderColor = borderColor.cgColor 
    } 
} 

und stellen Sie Ihre Imageview benutzerdefinierte Klasse "RoundedImageView".

Verwandte Themen