在以编程方式将图像分配给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)。
任何人都可以指导我如何获得正确的图像尺寸吗? 感谢
答案 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)
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。