Я пытаюсь отобразить UIImage, выбранный из UIImagePickerController внутри подкласса CALayer, и добавить его в свой суперпредставление, но не могу заставить его работать.
Вот как я получаю изображение из UIImagePickerController, который, кажется, работает хорошо:
- (IBAction)importImage:(id)sender
{
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.delegate = self;
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:imagePickerController];
[popover setPopoverContentSize:CGSizeMake(320,320)];
[popover presentPopoverFromRect:importBackgroundButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
self.popoverController = popover;
[imagePickerController release];
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[self.popoverController dismissPopoverAnimated:YES];
UIImage* img = [info objectForKey:UIImagePickerControllerOriginalImage];
[[context currentDrawing] setBkgImage:img];
}
Это мой подкласс CALayer, который содержит UIImage для отображения:
@interface UI_BackgroundImageLayer : CALayer
{
//This is for the Import image as background feature
UIImage* _bkgImg;
}
@property (nonatomic, retain) UIImage* _bkgImg;
-(void)update:(UIImage*)src;
@end
////
@implementation UI_BackgroundImageLayer
- (id)init
{
self = [ super init ];
// [self resetTransform ];
_bkgImg = nil;
return self;
}
-(void)update:(UIImage*)src
{
_bkgImg = [[UIImage alloc] initWithCGImage:src.CGImage];
self.contentsGravity = kCAGravityResizeAspect;
self.contents = (id)_bkgImg.CGImage;
}
@end
Я обновляю содержимое CALayer, когда пользователь выбирает другое изображение!
CALayer добавляется в суперпредставление с самого начала следующим образом:
[[_superView layer] insertSublayer:context._imgLayer atIndex:0];
Он вставляется с индексом 0, потому что он должен быть фоновым изображением, поэтому он должен находиться под другими элементами пользовательского интерфейса и чертежами.
Мне все это кажется хорошим, но на экране ничего не появляется ...