UIImageview没有四舍五入

Kin*_*ing 0 uiimageview ios swift

我正在尝试创建一个圆形图像,并且已经实现了正确的代码,但是我不知道为什么下面的代码没有四舍五入是我的代码

lazy var profileImage: UIImageView = {
       let image = UIImageView()
        image.translatesAutoresizingMaskIntoConstraints = false
        image.layer.borderColor = UIColor.blue.cgColor
        image.layer.borderWidth = 1.5
        image.image = UIImage(named: "prof.jpg")
        image.contentMode = .scaleAspectFit
        image.layer.cornerRadius = image.frame.size.width / 2
        image.clipsToBounds = true
        return image
    }()
Run Code Online (Sandbox Code Playgroud)

我的约束是

fileprivate func layout() {
        view.addSubview(profileImage)
        NSLayoutConstraint.activate([
        profileImage.centerXAnchor.constraint(equalTo: view.centerXAnchor),
        profileImage.centerYAnchor.constraint(equalTo: view.centerYAnchor),
        profileImage.heightAnchor.constraint(equalToConstant: 200),
        profileImage.widthAnchor.constraint(equalToConstant: 200),
        ])
}
Run Code Online (Sandbox Code Playgroud)

然后将layout()添加到viewDidLoad

Bra*_*ano 5

初始化时,您没有为UIImageView提供框架,因此它.zero用作默认框架。这意味着当您访问时,image.frame.size.width您将获得0值。

我建议的是将您image.layer.cornerRadius = image.frame.size.width / 2转移到viewDidLayoutSubviews您的UIViewController课堂上。

您还可以创建一个自定义类,该子类继承UIImageView并实现相同的逻辑。在overrideUIImageViewlayoutSubviews