Попробуйте это в вашем 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 в каждом измерении, а затем выбрать наименьший коэффициент масштабирования, чтобы убедиться, что изображение помещается в выделенное пространство.
При этом вы знаете размер изображения пользовательского интерфейса, и легко вычислить смещение X, Y w.r.t. вмещающая рама.