如何正确地设置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
我修正了它修改视图:
- 去你的Main.storyboard
- 点击你的图片
- 查看 – >模式 – >方面填充
它完美的作品
这对我来说是完美的。 线的顺序很重要
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