如何在swift中设置圆形图像

Pix*_*xel 72 uiimageview ios swift

如何让我快速圈出画面?

我的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))
    }
}
Run Code Online (Sandbox Code Playgroud)

profilPicture = UIImageView(frame: CGRectMake(0, 0, 100, 100))什么都不做..

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

小智 188

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
}
Run Code Online (Sandbox Code Playgroud)

这就是你所需要的......

  • `image.clipsToBounds = true`正是我所需要的:-) (6认同)
  • 如果UIImageView由于约束而增长或缩小,则不起作用.在这种情况下,它必须在viewDidLayoutSubviews()内 (3认同)

Dan*_*uta 35

你可以简单地创建扩展:

import UIKit

extension UIImageView {

   func setRounded() {
      let radius = CGRectGetWidth(self.frame) / 2
      self.layer.cornerRadius = radius
      self.layer.masksToBounds = true
   }
}
Run Code Online (Sandbox Code Playgroud)

并使用如下:

imageView.setRounded()
Run Code Online (Sandbox Code Playgroud)


MrM*_*ins 14

基于@DanielQ的答案

Swift 4和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
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在以下任何地方使用它ViewController:

imageView.setRounded()
Run Code Online (Sandbox Code Playgroud)


Tom*_*pee 12

如果你的意思是你想在Swift中创建一个UIImageView循环,你可以使用这个代码:

imageView.layer.cornerRadius = imageView.frame.height / 2
imageView.clipsToBounds = true
Run Code Online (Sandbox Code Playgroud)

  • @Tom Spee当我将角半径设置为图片宽度的一半时,我得到一个菱形图像而不是一个ircle.知道为什么会这样吗? (7认同)
  • 如果你不做``image.clipsToBounds = true``,图像将无法缩放. (2认同)

Gra*_*ace 6

不知道这是否对任何人都有帮助,但我一直在努力解决这个问题,网上的答案都没有帮助我.对我来说问题是我在故事板中的图像上设置了不同的高度和宽度.我尝试了堆栈上的每个解决方案,事实证明它就像那样简单.一旦我将它们设置为200,我的圆形轮廓图像就完美了.这是我的VC中的代码.

profileImage2.layer.cornerRadius = profileImage2.frame.size.width/2
    profileImage2.clipsToBounds = true
Run Code Online (Sandbox Code Playgroud)


J. *_*Doe 6

这种方式是最便宜的方式,并且始终保持图像视图圆润:

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
    }
}
Run Code Online (Sandbox Code Playgroud)

其他答案告诉您根据UIViewControllersviewDidLoad()方法中设置的帧计算对视图进行四舍五入。这是不正确的,因为它不确定最终的帧是什么。