自定义叠加与UIImagePickerControllerSourceTypeSavedPhotosAlbum

时间:2011-08-24 15:02:18

标签: ios overlay uiimagepickercontroller

我需要让用户从照片库中选择一张照片,并且能够在使用叠加图像时调整图像大小和裁剪图像。将UIImagePickerControllerSourceTypeCameracameraOverlayView一起使用很不错,但UIImagePickerControllerSourceTypeSavedPhotosAlbum不支持该属性。

奇怪的是,当我将叠加视图添加为alpha设置为一半的子视图时,叠加层会出现在照片选择屏幕上,但这不会随着Apple的批准过程而出现。

-(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];  
                [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];
}

问题

允许用户使用UIImagePickerControllerSourceTypeSavedPhotosAlbum使用叠加从PhotoLibrary中选择照片的正确方法是什么?

Overlay on Thumbs Overlay on Photo


解决

基本上,我需要编写3个单独的类并将它们组合起来创建我自己的自定义照片编辑视图,这也可以保存缩放/缩放/旋转编辑。

1 个答案:

答案 0 :(得分:1)

我最后写了几个课程:

  1. OverlayView 类是UIView,只是检索具有透明度的.png图像,并且是最底层的。

    < / LI>
  2. InteractiveWallpaper 类,它是UIImageView并处理所有touch事件,包括转化事件。

    < / LI>
  3. 最后, EditingView 类是UIViewController。这会添加前面提到的2个视图,并保存用户编辑的照片。

  4. 这也允许我自定义视图的行为。当用户触摸导入的照片时,最顶部的照片会降低其alpha值,从而允许用户在导入的照片更加明显时仍能看到覆盖图。