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