Где на экране мой UIImage? - PullRequest
       19

Где на экране мой UIImage?

2 голосов
/ 25 октября 2011

У меня есть UIImage, содержащийся в UIImageView.Он настроен на использование UIViewContentModeScaleAspectFit contentMode.UIImageView - это размер экрана.Изображение отсутствует, следовательно, режим scaleAspectFit.Что я не могу понять, это где на экране UIImage?Что это за рамка?Где верхний левый угол изображения появляется на экране?Я вижу это на экране, но не в коде.Это должно быть просто, но я не могу понять это.

1 Ответ

0 голосов
/ 01 декабря 2011

Попробуйте это в вашем 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. вмещающая рама.

...