在UIImageView中获取图像的大小

时间:2016-04-15 06:47:24

标签: ios swift uiimageview uiimage swift2

在以编程方式将图像分配给UIImageView后,我无法获得图像的大小。

下面的代码在循环中运行,并使用函数(getNoteImage)从URL(photoURL)下载图像并将其分配给创建的UIImageView。我需要获取图像的高度,以便我可以计算以下图像和标签的间距。

<script src='http://www.bacubacu.com/colresizable/js/colResizable-1.5.source.js'></script>
$('#info_table').DataTable({
     customProp: 'Hello World',
    initComplete: function(settings) { 
             $('#example').colResizable({liveDrag:true});
    }
 });

我尝试过使用

        var myImage :UIImageView

        myImage = UIImageView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height))

        myImage.center = CGPointMake(UIScreen.mainScreen().bounds.size.width/2, imageY)

        myImage.getNoteImage(photoUrl)

        self.detailsView.addSubview(myImage)

        myImage.contentMode = UIViewContentMode.ScaleAspectFit

        imageHeight = myImage.bounds.size.height

我在另一篇文章中读到了解决方案,但他刚刚返回设备的屏幕尺寸(iPhone6模拟器上的667)。

任何人都可以指导我如何获得正确的图像尺寸吗? 感谢

4 个答案:

答案 0 :(得分:4)

当您的imageView占据整个屏幕并使用“宽高比”调整图像大小以获得图像显示的高度时,您需要使用myImage.image!.size获取原始图像大小然后根据此缩放在myImage.bounds.size之类的东西;

let imageViewHeight = myImage.bounds.height
let imageViewWidth = myImage.bounds.width
let imageSize = myImage.image!.size
let scaledImageHeight = min(imageSize.height * (imageViewWidth / imageSize.width), imageViewHeight)

这应该给出图像的实际高度,注意image.size给出“图像的逻辑尺寸”,即它的自然尺寸,而不是它的绘制尺寸。

答案 1 :(得分:1)

作为UIImage official doc

if let image = myImage.image {
       let size = image.size
       print("image size is \(size)")
} else { 
    print("There is no image here..")
}

我认为您的代码使用同步图片,正如我在您的问题中所理解的那样,但如果不是,我建议使用 AlamofireImage

使用AlamofireImage,您可以:

self.myImage.af_setImageWithURL(
    NSURL(string: photoUrl)!,
    placeholderImage: nil,
    filter: nil,
    imageTransition: .CrossDissolve(0.5),
    completion: { response in
        print(response.result.value) # UIImage  
        if let image = response.result.value {
           let size = image.size
           print("image size is \(size)")
        }
        print(response.result.error) # NSError
    }
)

答案 2 :(得分:0)

更改您的代码,然后重试。只有你注意力设置了UIImageView的框架,然后给它一个图像,你可以使用&#34; imageHeight = myImage.bounds.size.height&#34;得到图像的真实大小。

    var myImage :UIImageView
    //remove your initial frame parameters
    myImage = UIImageView()
    myImage.center = CGPointMake(UIScreen.mainScreen().bounds.size.width/2, imageY)

答案 3 :(得分:0)

尝试使用myImage.image.size.height并确保从网址下载图片,您应该将其写入完成块,并仅检查图像是否已下载。  有关详细信息,请参阅documentation