屏幕上的位置是我的UIImage?

时间:2011-10-25 02:57:23

标签: ios uiimageview uiimage

UIImage中包含UIImageView。它设置为使用UIViewContentModeScaleAspectFit contentMode。 UIImageView是屏幕的大小。图像不是,因此scaleAspectFit模式。我无法弄清楚的是,屏幕上的UIImage在哪里?它的框架是什么?屏幕左上角出现在屏幕上?我可以在屏幕上看到它,但不能在代码中看到它。这应该很简单,但我无法弄清楚。

1 个答案:

答案 0 :(得分:0)

在你的UIImageView中试试这个:

假设您正在使用UIViewContentModeScaleAspectFit,它将计算图像的帧。

- (CGRect) imageFrame
{
    float horizontalScale = self.frame.size.width / self.image.size.width;
    float verticalScale = self.frame.size.height / self.image.size.height;
    float scale = MIN(horizontalScale, verticalScale);
    float xOffset = (self.frame.size.width - self.image.size.width * scale) / 2;
    float yOffset = (self.frame.size.height - self.image.size.height * scale) / 2;
    return CGRectMake(xOffset,
                      yOffset,
                      self.image.size.width * scale,
                      self.image.size.height * scale);
}

它的作用是计算出你需要多少缩小/放大UIImage以使其适合每个维度的UIImageView,然后选择最小的缩放因子,以确保图像适合分配的空间。

通过它你知道UI图像的大小,并且很容易计算X,Y偏移w.r.t.包含框架。