Bur*_*000 25 iphone uiimageview
真的很奇怪的一个被卡住但奇怪的是我.
你有一个imageView
包含图像.你缩小尺寸,imageView
然后告诉它使用UIViewContentModeScaleAspectFit
.所以你imageView
可能是300乘200但你的缩放图像可能是300乘118或228乘200因为它aspectfit
.
你到底如何得到实际图像的大小?
imageView.image.size
是原始图像的大小.
imageview.frame
是imageview
不包含图像的框架.
imageview.contentstretch
也不起作用
Cyr*_*lle 36
我在UIImageView上编写了一个快速类别来实现:
(.H)
@interface UIImageView (additions)
- (CGSize)imageScale;
@end
Run Code Online (Sandbox Code Playgroud)
(.M)
@implementation UIImageView (additions)
- (CGSize)imageScale {
CGFloat sx = self.frame.size.width / self.image.size.width;
CGFloat sy = self.frame.size.height / self.image.size.height;
CGFloat s = 1.0;
switch (self.contentMode) {
case UIViewContentModeScaleAspectFit:
s = fminf(sx, sy);
return CGSizeMake(s, s);
break;
case UIViewContentModeScaleAspectFill:
s = fmaxf(sx, sy);
return CGSizeMake(s, s);
break;
case UIViewContentModeScaleToFill:
return CGSizeMake(sx, sy);
default:
return CGSizeMake(s, s);
}
}
@end
Run Code Online (Sandbox Code Playgroud)
将原始图像大小乘以给定比例,您将获得实际显示的图像大小.
Bas*_*ian 11
嗯..你必须做一些数学.你有原始图像的大小,你有图像视图的大小..所以你可以计算它是否将按高度或宽度调整大小.
如果图像视图为300x200且图像为1024x768,则可以计算出哪个是限制因素
300/1024 = 0.29296875
200/768 = 0.260416667
Run Code Online (Sandbox Code Playgroud)
所以高度是限制因素......图像将是:
267x200
接受答案的Swift版本:
extension UIImageView {
var imageScale: CGSize {
let sx = Double(self.frame.size.width / self.image!.size.width)
let sy = Double(self.frame.size.height / self.image!.size.height)
var s = 1.0
switch (self.contentMode) {
case .scaleAspectFit:
s = fmin(sx, sy)
return CGSize (width: s, height: s)
case .scaleAspectFill:
s = fmax(sx, sy)
return CGSize(width:s, height:s)
case .scaleToFill:
return CGSize(width:sx, height:sy)
default:
return CGSize(width:s, height:s)
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12146 次 |
最近记录: |