如何正确地设置imageView中像imageContacts在Swift中?

我想显示一个图像到imageView像图像联系人(在一个圆圈)但是,当我尝试显示这个,imageView重新缩放他的大小,这不能正确显示在一个圆圈..

image.layer.borderWidth=1.0 image.layer.masksToBounds = false image.layer.borderColor = UIColor.whiteColor().CGColor image.layer.cornerRadius = image.frame.size.height/2 image.clipsToBounds = true 

我想要这样展示: 在这里输入图像说明

但是我得到这个: 在这里输入图像说明

如何将图像调整为UIImageView大小显示为圆形?

谢谢!

你使用什么frame大小的image ? 如果将框架设置为方块,我可以得到一个完美的圆圈。

 let image = UIImageView(frame: CGRectMake(0, 0, 100, 100)) 

这是我在我的应用程序中使用的解决scheme:

 var image: UIImage = UIImage(named: "imageName") imageView.layer.borderWidth = 1.0 imageView.layer.masksToBounds = false imageView.layer.borderColor = UIColor.whiteColor().CGColor imageView.layer.cornerRadius = image.frame.size.width/2 imageView.clipsToBounds = true 

快速 简单的解决scheme。

如何将UIImage 遮罩到Circle而不用Swift进行修剪。

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

如何打电话:

 let anyAvatarImage:UIImage = UIImage(named: "avatar")! avatarImageView.maskCircle(anyAvatarImage) 

这就是你需要的….

  profilepic = UIImageView(frame: CGRectMake(0, 0, self.view.bounds.width * 0.19 , self.view.bounds.height * 0.1)) profilepic.layer.borderWidth = 1 profilepic.layer.masksToBounds = false profilepic.layer.borderColor = UIColor.blackColor().CGColor profilepic.layer.cornerRadius = profilepic.frame.height/2 profilepic.clipsToBounds = true slider.addSubview(profilepic) 

我会build议使您的图像文件一个完美的广场开始。 这可以在几乎任何照片编辑程序中完成。 之后,这应该在viewDidLoad内工作。 感谢这个video

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

我修正了它修改视图:

  1. 去你的Main.storyboard
  2. 点击你的图片
  3. 查看 – >模式 – >方面填充

它完美的作品

这对我来说是完美的。 线的顺序很重要

 func circularImage(photoImageView: UIImageView?) { photoImageView!.layer.frame = CGRectInset(photoImageView!.layer.frame, 0, 0) photoImageView!.layer.borderColor = UIColor.grayColor().CGColor photoImageView!.layer.cornerRadius = photoImageView!.frame.height/2 photoImageView!.layer.masksToBounds = false photoImageView!.clipsToBounds = true photoImageView!.layer.borderWidth = 0.5 photoImageView!.contentMode = UIViewContentMode.ScaleAspectFill } 

如何使用:

  @IBOutlet weak var photoImageView: UIImageView! ... ... circularImage(photoImageView) 

我发现的是,你的图像视图的宽度和高度必须返回一个偶数,除以2得到一个完美的圆形例如

 let image = UIImageView(frame: CGRectMake(0, 0, 120, 120)) 

它不应该像let image = UIImageView(frame:CGRectMake(0,0,130,130))

这也适用于我。 要获得完美的圆形效果,请使用相同的宽度和高度尺寸。 像image.frame = CGRect(0,0,200, 200)

对于非完美圆形,宽度和高度不应该像下面的代码那样相等。

  image.frame = CGRect(0,0,200, 160) image.layer.borderColor = UIColor.whiteColor().CGColor image.layer.cornerRadius = image.frame.size.height/2 image.layer.masksToBounds = false image.layer.clipsToBounds = true image.contentMode = .scaleAspectFill 

我有一个类似的结果(更多的是一个圆形的椭圆形)。 事实certificate,我在UIImageView上设置的约束迫使它变成了一个椭圆而不是一个圆圈。 解决之后,上面的解决scheme工作。

创build您的自定义圆圈UIImageView,并创build在layoutSubviews下的圆圈如果您使用Autolayout的帮助。

 /* +-------------+ | | | | | | | | | | | | +-------------+ The IMAGE MUST BE SQUARE */ class roundImageView: UIImageView { override init(frame: CGRect) { // 1. setup any properties here // 2. call super.init(frame:) super.init(frame: frame) // 3. Setup view from .xib file } required init?(coder aDecoder: NSCoder) { // 1. setup any properties here // 2. call super.init(coder:) super.init(coder: aDecoder) // 3. Setup view from .xib file } override func layoutSubviews() { super.layoutSubviews() self.layer.borderWidth = 1 self.layer.masksToBounds = false self.layer.borderColor = UIColor.white.cgColor self.layer.cornerRadius = self.frame.size.width/2 self.clipsToBounds = true } } 

尝试这个。 swift代码

 override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(true) perform(#selector(self.setCircleForImage(_:)), with: pickedImage, afterDelay: 0) } @objc func setCircleForImage(_ imageView : UIImageView){ imageView.layer.cornerRadius = pickedImage.frame.size.width/2 imageView.clipsToBounds = true } 
 reviewerImage.layer.cornerRadius = reviewerImage.frame.size.width / 2; reviewerImage.clipsToBounds = true