У меня есть собственный класс UIImageView, который создает миниатюры (UIImageView), и каждый эскиз имеет метку.
Метка создана другим классом. Класс меток создает UIImageView и UITextView поверх него.
Это метод инициализации основного класса миниатюр:
- (id)initWithFrame:(CGRect)frame
{
if ([super initWithFrame:frame] == nil) {
return nil;
}
CGRect myFrame = CGRectMake(0, 0, 100, 100);
myLabel = [[myLabelClass alloc] initWithFrame: myFrame]; //myLabelClass is a UIImageView based class
[myLabel setCenter:CGPointMake(50, 50)];
[self addSubview: myLabel];
return self;
}
Класс меток просто создает UIImageView и UITextView и помещает в него текст.
Итак, у меня есть это
MAIN VIEW CONTROLLER |
|___ UIImageView WITH LABEL
|
|____ label background (UIView)
|____ UITEXTVIEW (text)
Теперь я хочу записать содержимое всех этих трех компонентов в контекст кварца.
Мне нужно писать с использованием drawInRect, потому что мне нужно записать полный объект в точное местоположение.
Я ожидал, что object.layer.contents будет изображением, эквивалентным этим 3 "слоям", другими словами, изображением объекта, фоном метки и текстом метки, как если бы я создали эти 3 объекта в Photoshop и сгладили композицию.
Я также ожидаю thumbnail.myLabel.layer.contents до
содержит визуализированное содержимое UITextView поверх фона метки.
Проблема в том, что когда я использую
UIImage *myImage = [UIImage imageWithCGImage:thumbnail.myLabel.layer.contents];
[myImage drawInRect:CGRectMake(0, 0, 100, 100)];
Я ничего не получаю.
Как получить «сплющенное» изображение, получающееся в результате для всего объекта (включая его подпредставления)?
спасибо