Подтвердить что ты не робот

Как установить изображение в круге в быстром

Как я могу сделать круговое изображение с быстрым?

My 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))
    }
}

Мой profilPicture = UIImageView(frame: CGRectMake(0, 0, 100, 100)) ничего не делает..

Пример: http://www.appcoda.com/ios-programming-circular-image-calayer/

4b9b3361

Ответ 1

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
}

Если вы хотите это на расширение

import UIKit

extension UIImageView {

    func makeRounded() {

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

Это все, что тебе нужно....

Ответ 2

Вы можете просто создать расширение:

import UIKit

extension UIImageView {

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

и используйте его, как показано ниже:

imageView.setRounded()

Ответ 3

Основано в ответе @DanielQ

Свифт 4 и Свифт 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
    }
}

Вы можете использовать его в любом ViewController с:

imageView.setRounded()

Ответ 4

Если вы хотите сделать циркуляр UIImageView в Swift, вы можете просто использовать этот код:

imageView.layer.cornerRadius = imageView.frame.height / 2
imageView.clipsToBounds = true

Ответ 5

Не знаю, помогло ли это кому-либо, но я некоторое время боролся с этой проблемой, ни один из ответов онлайн не помог мне. Для меня проблема заключалась в том, что у меня были разные высоты и ширины, установленные на изображении в раскадровке. Я пробовал каждое решение на стеке, и оказалось, что это было что-то простое. Как только я установил их как 200, мой профиль профиля круга был идеальным. Это был код в моем VC.

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

Ответ 6

Для Swift 4:

import UIKit

extension UIImageView {

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

Ответ 7

Все приведенные выше ответы не смогли решить проблему в моем случае. Мой ImageView был помещен в настраиваемый UITableViewCell. Поэтому я также вызвал метод layoutIfNeeded(). Пример:

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

Ответ 8

Этот способ является наименее дорогим и всегда сохраняет вид вашего изображения округленным:

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

Другие ответы говорят вам, чтобы округлить представления на основе вычислений фрейма, установленных в UIViewController viewDidLoad(). Это не правильно, поскольку неясно, каким будет окончательный кадр.

Ответ 9

Сначала вам нужно установить равную ширину и высоту для получения Circular ImageView.Below. Я установил ширину и высоту как 100 100. Если вы хотите установить равную ширину и высоту в соответствии с вашим требуемым размером, задайте здесь.

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

Затем вам нужно установить высоту /2 для углового радиуса

 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)

Ответ 10

Для разработчиков Swift3/Swift4:

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

Ответ 11

struct CircleImage: View {
    var image: Image

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

Это правильно для SwiftUI

Ответ 13

// 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)
}
}

//вызвать функцию из контроллера вида

self.imgCircleSmallImage.maskCircle(imgCircleSmallImage.image!)

Ответ 14

Если ваше изображение округлено, оно будет иметь высоту и ширину одинакового размера (например, 120). Вы просто берете половину этого номера и используете его в своем коде (image.layer.cornerRadius = 60).