开发者

Custom Overlay with UIImagePickerControllerSourceTypeSavedPhotosAlbum

I need to let the user select a photo from the Photo Library and be able to size and crop their image while using an Overlay image. Using UIImagePickerControllerSourceTypeCamera with cameraOverlayView is fine, but UIImagePickerControllerSourceTypeSavedPhotosAlbum does not support that property.

Strangely enough, when I add the overlay view as a subView with alpha set at half, the overlay appears on the Photo selection screen, but this wont fly with Apple's approval process.

-(void)choosePhotoDialog:(id)sender
{ 
    UIBarButtonItem * barThing = (UIBarButtonItem*)sender;

    OverlayView * overlay = [[OverlayView alloc] initWithFrame: CGRectMake(0, 0, SCREEN_WIDTH_IPHONE, SCREEN_HEIGTH_IPHONE)
                                               andPhotoOverlay: [dict objectForKey:@"imageUrl"]];
    [overlay setUserInteractionEnabled: NO];

    UIImagePickerController * picker = [[UIImagePickerController alloc] init];

    switch (barThing.tag) 
    {
        case 0: [picker setSourceType: UIImagePickerControllerSourceTypeCamera];
                [picker setShowsCameraControls: YES];  
    开发者_StackOverflow            [picker setCameraOverlayView: overlay];
            break;
        case 1: [picker setSourceType: UIImagePickerControllerSourceTypeSavedPhotosAlbum];
                [picker.view addSubview: overlay];
                [overlay setAlpha: 0.5f];
            break;
    }

    [picker setDelegate: self];
    [picker setAllowsEditing: YES];
    [picker setNavigationBarHidden: YES];
    [picker setWantsFullScreenLayout: YES];
    [self presentModalViewController:picker animated:YES];  
    [picker release];
}

Question

What is the correct way to allow a user to select a photo from the PhotoLibrary with an Overlay using UIImagePickerControllerSourceTypeSavedPhotosAlbum?

Custom Overlay with UIImagePickerControllerSourceTypeSavedPhotosAlbum

Custom Overlay with UIImagePickerControllerSourceTypeSavedPhotosAlbum


Resolved

Basically, I needed to write 3 separate classes and combine them to create my own custom photo editing view, which also saves pinch / zoom / rotate edits.


I ended up writing several classes:

  1. An OverlayView class which is a UIView and simply retrieves the .png image with transparency and is the bottom-most layer.

  2. An InteractiveWallpaper class which is a UIImageView and handles all of the touch events, including the transformation events.

  3. And finally, an EditingView class which is a UIViewController. This adds the 2 views previously mentioned as well as saves the photo that the user edited.

This also allowed me to customize the behavior of the view. When the user touches the imported photo, the top-most photo decreases it's alpha value, allowing the user to still see the overlay while the imported photo is more visible.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜