如何在swift 4中使图像视图变圆

Posted

技术标签:

【中文标题】如何在swift 4中使图像视图变圆【英文标题】:How to make image view round in swift 4 【发布时间】:2018-04-12 07:42:10 【问题描述】:

虽然网上有这个问题的解决方案,但我做不到,我想对图像进行四舍五入。

我正在使用的这段代码:

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

然后我在 viewdidload() 中调用这个函数,如 imgvw.makeRounded()。但它不会来。请帮忙

上一个链接对我没有帮助

【问题讨论】:

调用viewdidappear并检查一次 ios swift 3 xcode8 beta rounded imageView的可能重复 设置self.clipToBounds=true 在你的 viewDidLayoutSubView 方法中调用这个函数 可能 frame.width = 0 -> 半径 = 0,让我们在 viewdidappear 或 viewDidLayoutSubView 中调用 【参考方案1】:
import UIKit

class ViewController: UIViewController 
  @IBOutlet weak var image: UIImageView!

  func makeRounded() 

    image.layer.borderWidth = 1
    image.layer.masksToBounds = false
    image.layer.borderColor = UIColor.blackColor().CGColor
    image.layer.cornerRadius = image.frame.height/2 //This will change with corners of image and height/2 will make this circle shape
    image.clipsToBounds = true

快乐编码

【讨论】:

它不会来,先生 您是否更改了cornerRadius 的值,比如说设置.cornerRadius = 4.0。只需尝试根据您的需要更改此值 它即将到来,先生,我想要圆形 是的......它来了,先生 问题是关于图像本身,而不是关于它何时添加到控制器【参考方案2】:

覆盖viewDidLayoutSubviews 将不必要地调用函数makeRounded(),因为每次在超级视图中发生某些布局时都会调用它。你应该使用这个:

class RoundedImageView: UIImageView 

    @override func layoutSubviews() 
        super.layoutSubviews()
        let radius = self.frame.width/2.0
        layer.cornerRadius = radius
        clipsToBounds = true // This could get called in the (requiered) initializer
        // or, ofcourse, in the interface builder if you are working with storyboards
    


将 imageView 的类设置为 RoundedImageView

【讨论】:

它不会来,先生 @GoribDeveloper 如果您完全复制粘贴此代码!并且!将你的 UIImageView 的类设置为 RoundedImageView,它应该被四舍五入【参考方案3】:

我的代码运行良好。

avatar.layer.borderWidth = 1
avatar.layer.masksToBounds = false
avatar.layer.borderColor = UIColor(hexString: "#39B44E").cgColor
avatar.layer.cornerRadius = avatar.frame.height/2 //This will change with corners of image and height/2 will make this circle shape
avatar.clipsToBounds = true

【讨论】:

【参考方案4】:

为你的班级创建一个扩展

extension ViewController: UIViewController

    func makeRounded() 

        layer.borderWidth = 1
        layer.masksToBounds = false
        layer.borderColor = UIColor.blackColor().CGColor
        layer.cornerRadius = frame.height/2 
        clipsToBounds = true
    


然后调用使用它

imageView.makeRounded()

【讨论】:

以上是关于如何在swift 4中使图像视图变圆的主要内容,如果未能解决你的问题,请参考以下文章

如何在Xamarin.Form中的Frame Renders中使3个圆角变圆?

如何在 Swift iOS 中使 web 视图不可点击

Swift 4 - 快速有两个圆角的图像视图?

在视图控制器/页面视图控制器中使图像视图全屏显示(swift)

如何在 swift 中使文本字段功能在 tableview 中

如何根据swift 4或5中的图像大小使图像视图高度和宽度(纵横比)动态? [关闭]