gpt4 book ai didi

iPhone SDK-UIImageView : position of image

转载 作者:太空狗 更新时间:2023-10-30 03:57:01 25 4
gpt4 key购买 nike

我有一个标准的 UIImageView,其 ContentMode 设置为 UIContentModeAspectRatioFit。我试图找出如何获取图像相对于绝对坐标或 UIImageView 原点的位置。

这可能吗?我看过很多关于无法设置位置的帖子,但没有关于是否可以GET位置的帖子。

非常感谢,布雷特

最佳答案

我知道这个问题已经得到解答,但我写了一个函数来计算 imageView 中图像相对于 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);
}

关于iPhone SDK-UIImageView : position of image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6596832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com