Я создал собственный класс представления и сейчас просто хочу нарисовать изображение, масштабированное для соответствия виду, учитывая UIImage. Я попытался просто нарисовать UIImage.CGImage, но, как другие засвидетельствовали на этом сайте (и в документах), это переводит изображение вверх ногами.
Итак, при предложении ответа, который я нашел на другой вопрос, я пытаюсь нарисовать его напрямую, но в представлении ничего не отображается, и я не уверен, почему. Вот мой код для рисования:
- (void)drawRect:(CGRect)rect {
// Drawing code
[super drawRect:rect];
if (self.originalImage) {
[self drawImage];
}
}
- (void) drawImage {
if (CGSizeEqualToSize(originalImage.size, self.frame.size) == NO) {
CGFloat scaleFactor = 1.0;
CGFloat scaledWidth = 0.0;
CGFloat scaledHeight = 0.0;
CGPoint thumbPoint = CGPointMake(0.0, 0.0);
CGFloat widthFactor = self.frame.size.width / originalImage.size.width;
CGFloat heightFactor = self.frame.size.height / originalImage.size.height;
if (widthFactor < heightFactor) {
scaleFactor = widthFactor;
} else {
scaleFactor = heightFactor;
}
scaledWidth = originalImage.size.width * scaleFactor;
scaledHeight = originalImage.size.height * scaleFactor;
if (widthFactor < heightFactor) {
thumbPoint.y = (self.frame.size.height - scaledHeight) * 0.5;
} else if (widthFactor > heightFactor) {
thumbPoint.x = (self.frame.size.width - scaledWidth) * 0.5;
}
UIGraphicsBeginImageContext(self.frame.size);
CGRect thumbRect = CGRectZero;
thumbRect.origin = thumbPoint;
thumbRect.size.width = scaledWidth;
thumbRect.size.height = scaledHeight;
[originalImage drawInRect:thumbRect];
self.scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
} else {
self.scaledImage = originalImage;
}
}
Мое понимание (после небольшого изучения) состоит в том, что функция UIGraphicsBeginImageContext создает закадровый для меня, чтобы рисовать, так что теперь, как я могу визуализировать этот контекст поверх исходного?