Swift 确定UIImageView中的图像帧

Swift 确定UIImageView中的图像帧,swift,Swift,我试图确定UIImageView中图像的帧。下面是我的尝试。我用蓝色勾勒出了图像的边界。可以看出,边框似乎与图像不匹配。有人能帮忙吗 UIImageView的自动布局是否影响结果 var imageView: UIImageView! var margin: UILayoutGuide! let imgViewFrame = CGRect.init(x: 0, y: 0, width: margin.layoutFrame.width, height: margin.layoutFrame

我试图确定UIImageView中图像的帧。下面是我的尝试。我用蓝色勾勒出了图像的边界。可以看出,边框似乎与图像不匹配。有人能帮忙吗

UIImageView的自动布局是否影响结果

var imageView: UIImageView!
var margin: UILayoutGuide!


 let imgViewFrame = CGRect.init(x: 0, y: 0, width: margin.layoutFrame.width, height: margin.layoutFrame.height)
    let imgView = UIImageView.init(frame: imgViewFrame)
    imgView.contentMode = .scaleAspectFit
    imgView.backgroundColor = UIColor.lightGray
    view.addSubview(imgView)

    imgView.translatesAutoresizingMaskIntoConstraints = false
    imgView.topAnchor.constraint(equalTo: margin.topAnchor).isActive = true
    imgView.bottomAnchor.constraint(equalTo: margin.bottomAnchor).isActive = true
    imgView.leadingAnchor.constraint(equalTo: margin.leadingAnchor).isActive = true
    imgView.trailingAnchor.constraint(equalTo: margin.trailingAnchor).isActive = true

    let image = UIImage.init(named: imageName)
    imgView.image = image
    imageView = imgView

    //Test
    let imageRect = AVMakeRect(aspectRatio: imgView.image!.size, insideRect: self.imageView.frame)
    let imageBorderCheckView = UIView.init(frame: imageRect)
    imageBorderCheckView.layer.borderWidth = 3
    imageBorderCheckView.layer.borderColor = UIColor.blue.cgColor
    view.addSubview(imageBorderCheckView)

在此处使用图像边框

let imageRect = AVMakeRect(aspectRatio: imgView.image!.size, insideRect: self.imageView.frame)
viewdilayoutsubviews
/
viewdirebeen
/
viewdirebeen

override func viewDidAppear(_ animated:Bool) {
  super.viewDidAppear(animated)
//Test
   let imageRect = AVMakeRect(aspectRatio: imgView.image!.size, insideRect: self.imageView.frame)
   let imageBorderCheckView = UIView.init(frame: imageRect)
   imageBorderCheckView.layer.borderWidth = 3
   imageBorderCheckView.layer.borderColor = UIColor.blue.cgColor
   view.addSubview(imageBorderCheckView)
}
在这里使用图像框

let imageRect = AVMakeRect(aspectRatio: imgView.image!.size, insideRect: self.imageView.frame)
viewdilayoutsubviews
/
viewdirebeen
/
viewdirebeen

override func viewDidAppear(_ animated:Bool) {
  super.viewDidAppear(animated)
//Test
   let imageRect = AVMakeRect(aspectRatio: imgView.image!.size, insideRect: self.imageView.frame)
   let imageBorderCheckView = UIView.init(frame: imageRect)
   imageBorderCheckView.layer.borderWidth = 3
   imageBorderCheckView.layer.borderColor = UIColor.blue.cgColor
   view.addSubview(imageBorderCheckView)
}

怀疑这一行
let imageRect=AVMakeRect(aspectRatio:imgView.image!.size,inside:self.imageView.frame)
试图在它前面打印
self.imageView.frame
?你能将大纲代码复制到
viewdidisbeen
吗try@Sh_Khan答对 了你说得对。非常感谢!怀疑这一行
let imageRect=AVMakeRect(aspectRatio:imgView.image!.size,inside:self.imageView.frame)
试图在它前面打印
self.imageView.frame
?你能将大纲代码复制到
viewdidisbeen
吗try@Sh_Khan答对 了你说得对。非常感谢!