Bre*_*ett 4 iphone objective-c uiimageview
我有一个标准UIImageView,其ContentMode设置为UIContentModeAspectRatioFit.我试图找出如何获得图像相对于绝对坐标或UIImageView原点的位置.
这可能吗?我已经看到了很多关于它是如何不能设置的位置,但没有就是否有可能职位的GET位置.
非常感谢,布雷特
我知道这已经回答了,但是我写了一个函数来计算imageView中图像的图像框架.
编辑:忘了最重要的一些.
+ (CGRect) imagePositionInImageView:(UIImageView*)imageView
{
float x = 0.0f;
float y = 0.0f;
float w = 0.0f;
float h = 0.0f;
CGFloat ratio = 0.0f;
CGFloat horizontalRatio = imageView.frame.size.width / imageView.image.size.width;
CGFloat verticalRatio = imageView.frame.size.height / imageView.image.size.height;
switch (imageView.contentMode) {
case UIViewContentModeScaleToFill:
w = imageView.frame.size.width;
h = imageView.frame.size.height;
break;
case UIViewContentModeScaleAspectFit:
// contents scaled to fit with fixed aspect. remainder is transparent
ratio = MIN(horizontalRatio, verticalRatio);
w = imageView.image.size.width*ratio;
h = imageView.image.size.height*ratio;
x = (horizontalRatio == ratio ? 0 : ((imageView.frame.size.width - w)/2));
y = (verticalRatio == ratio ? 0 : ((imageView.frame.size.height - h)/2));
break;
case UIViewContentModeScaleAspectFill:
// contents scaled to fill with fixed aspect. some portion of content may be clipped.
ratio = MAX(horizontalRatio, verticalRatio);
w = imageView.image.size.width*ratio;
h = imageView.image.size.height*ratio;
x = (horizontalRatio == ratio ? 0 : ((imageView.frame.size.width - w)/2));
y = (verticalRatio == ratio ? 0 : ((imageView.frame.size.height - h)/2));
break;
case UIViewContentModeCenter:
// contents remain same size. positioned adjusted.
w = imageView.image.size.width;
h = imageView.image.size.height;
x = (imageView.frame.size.width - w)/2;
y = (imageView.frame.size.height - h)/2;
break;
case UIViewContentModeTop:
w = imageView.image.size.width;
h = imageView.image.size.height;
x = (imageView.frame.size.width - w)/2;
break;
case UIViewContentModeBottom:
w = imageView.image.size.width;
h = imageView.image.size.height;
y = (imageView.frame.size.height - h);
x = (imageView.frame.size.width - w)/2;
break;
case UIViewContentModeLeft:
w = imageView.image.size.width;
h = imageView.image.size.height;
y = (imageView.frame.size.height - h)/2;
break;
case UIViewContentModeRight:
w = imageView.image.size.width;
h = imageView.image.size.height;
y = (imageView.frame.size.height - h)/2;
x = (imageView.frame.size.width - w);
break;
case UIViewContentModeTopLeft:
w = imageView.image.size.width;
h = imageView.image.size.height;
break;
case UIViewContentModeTopRight:
w = imageView.image.size.width;
h = imageView.image.size.height;
x = (imageView.frame.size.width - w);
break;
case UIViewContentModeBottomLeft:
w = imageView.image.size.width;
h = imageView.image.size.height;
y = (imageView.frame.size.height - h);
break;
case UIViewContentModeBottomRight:
w = imageView.image.size.width;
h = imageView.image.size.height;
y = (imageView.frame.size.height - h);
x = (imageView.frame.size.width - w);
default:
break;
}
return CGRectMake(x, y, w, h);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7018 次 |
| 最近记录: |