webentwicklung-frage-antwort-db.com.de

Wie man das Bild schnell im Kreis einstellt

Wie kann ich ein Bild mit Swift kreieren?

Mein ViewController:

import UIKit
import Foundation

class FriendsViewController : UIViewController{

    @IBOutlet weak var profilPicture: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        profilPicture = UIImageView(frame: CGRectMake(0, 0, 100, 100))
    }
}

Meine profilPicture = UIImageView(frame: CGRectMake(0, 0, 100, 100)) tut nichts ..

Beispiel: http://www.appcoda.com/ios-programming-circular-image-calayer/

58
Pixel
import UIKit

class ViewController: UIViewController {
  @IBOutlet weak var image: UIImageView!

  override func viewDidLoad() {
    super.viewDidLoad()

    image.layer.borderWidth = 1
    image.layer.masksToBounds = false
    image.layer.borderColor = UIColor.black.cgColor
    image.layer.cornerRadius = image.frame.height/2
    image.clipsToBounds = true
}

Das ist alles was du brauchst ....

161
Jon

Sie können einfach eine Erweiterung erstellen:

import UIKit

extension UIImageView {

   func setRounded() {
      let radius = CGRectGetWidth(self.frame) / 2
      self.layer.cornerRadius = radius
      self.layer.masksToBounds = true
   }
}

und benutze es wie folgt:

imageView.setRounded()
33
Daniel Kuta

Basierend auf der Antwort von @DanielQ

Swift 4 und Swift 3

import UIKit

extension UIImageView {

    func setRounded() {
        self.layer.cornerRadius = (self.frame.width / 2) //instead of let radius = CGRectGetWidth(self.frame) / 2
        self.layer.masksToBounds = true
    }
}

Sie können es in jeder ViewController verwenden mit:

imageView.setRounded()
11
MrMins

Wenn Sie meinen, Sie möchten ein UIImageView-Rundschreiben in Swift erstellen, können Sie einfach diesen Code verwenden:

imageView.layer.cornerRadius = imageView.frame.height / 2
imageView.clipsToBounds = true
10
Tom Spee

Ich weiß nicht, ob dies jemandem hilft, aber ich hatte eine Zeitlang mit diesem Problem zu kämpfen. Für mich bestand das Problem darin, dass ich im Storyboard unterschiedliche Höhen und Breiten für das Bild hatte. Ich habe jede Lösung auf Stack ausprobiert und es stellte sich heraus, dass es so einfach war. Nachdem ich beide auf 200 eingestellt hatte, war mein Kreisprofil perfekt. Das war dann Code in meinem VC.

profileImage2.layer.cornerRadius = profileImage2.frame.size.width/2
    profileImage2.clipsToBounds = true
6
Grace

Für Swift 4 :

import UIKit

extension UIImageView {

func makeRounded() {
    let radius = self.frame.width/2.0
    self.layer.cornerRadius = radius
    self.layer.masksToBounds = true
   }
}
4
Ghulam Rasool

Alle obigen Antworten konnten das Problem in meinem Fall nicht lösen. Meine ImageView wurde in einer benutzerdefinierten UITableViewCell abgelegt. Daher hatte ich von hier auch die layoutIfNeeded()-Methode aufgerufen. Beispiel:

 class NameTableViewCell:UITableViewCell,UITextFieldDelegate { ...

 override func awakeFromNib() {

    self.layoutIfNeeded()
    profileImageView.layoutIfNeeded()

    profileImageView.isUserInteractionEnabled = true
    let square = profileImageView.frame.size.width < profileImageView.frame.height ? CGSize(width: profileImageView.frame.size.width, height: profileImageView.frame.size.width) : CGSize(width: profileImageView.frame.size.height, height:  profileImageView.frame.size.height)
    profileImageView.addGestureRecognizer(tapGesture)
    profileImageView.layer.cornerRadius = square.width/2
    profileImageView.clipsToBounds = true;
}
2
Nazar Medeiros
struct CircleImage: View {
    var image: Image

    var body: some View {
        image
           .clipShape(Circle())
    }
}

Dies ist korrekt für SwiftUI

1
Michal Rogowski

Zuerst müssen Sie die gleiche Breite und Höhe einstellen, um Circular ImageView zu erhalten. Als Breite und Höhe muss 100,100 eingestellt werden. Wenn Sie die gleiche Breite und Höhe entsprechend Ihrer erforderlichen Größe einstellen möchten, müssen Sie hier einstellen.

 var imageCircle = UIImageView(frame: CGRectMake(0, 0, 100, 100))

Dann müssen Sie die Höhe/2 für den Eckenradius einstellen 

 imageCircle.layer.cornerRadius = imageCircle.frame.size.height/2
 imageCircle.layer.borderWidth = 1
 imageCircle.layer.borderColor = UIColor.blueColor().CGColor
 imageCircle.clipsToBounds = true
 self.view.addSubview(imageCircle)
1
user3182143

Für Swift3/Swift4-Entwickler:

let radius = yourImageView.frame.width / 2
yourImageView.layer.cornerRadius = radius
yourImageView.layer.masksToBounds = true
1
Achintya Ashok

Dieser Weg ist der kostengünstigste Weg und hält Ihre Bildansicht immer aufgerundet:

class RoundedImageView: UIImageView {

    override init(frame: CGRect) {
        super.init(frame: frame)

        clipsToBounds = true
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        clipsToBounds = true
    }

    override func layoutSubviews() {
        super.layoutSubviews()

        assert(bounds.height == bounds.width, "The aspect ratio isn't 1/1. You can never round this image view!")

        layer.cornerRadius = bounds.height / 2
    }
}

Bei den anderen Antworten werden Sie aufgefordert, Ansichten basierend auf Rahmenberechnungen in einer UIViewControllers viewDidLoad()-Methode abzurunden. Das ist nicht richtig , da es nicht sicher ist, wie das endgültige Bild aussehen wird.

0
J. Doe

Laden Sie Toucan von GitHub herunter. Es wird in Swift angeboten. Betäubung einfach. Es bietet auch eine Reihe anderer Bildeffekte. 

0
user3286381

Wenn Ihr Bild gerundet ist, hätte es eine Höhe und Breite, die genau dieselbe Größe haben (d. H. 120). Sie nehmen einfach die Hälfte dieser Zahl und verwenden diese in Ihrem Code (image.layer.cornerRadius = 60).

0
Raul Gutierrez
// code to make the image round


import UIKit

extension UIImageView {
public func maskCircle(anyImage: UIImage) {


    self.contentMode = UIViewContentMode.ScaleAspectFill
    self.layer.cornerRadius = self.frame.height / 2
    self.layer.masksToBounds = false
    self.clipsToBounds = true




    // make square(* must to make circle),
    // resize(reduce the kilobyte) and
    // fix rotation.
    //        self.image = prepareImage(anyImage)
}
}

// um die Funktion vom View Controller aufzurufen

self.imgCircleSmallImage.maskCircle(imgCircleSmallImage.image!)
0
Ullas Kumar