zoukankan      html  css  js  c++  java
  • 重定义 UIImagePickerController

    今天想实现一个类似Path 的Photo Picker的效果,没有Cancel按钮,取而代之的是添加一个从相册获取的按钮,要知道这在官方的SDK里面是没有。
    开始之前,先做下功课,找到几个相关的文章

    http://blog.airsource.co.uk/index.php/2008/11/11/views-of-uiimagepickercontroller/

    http://www.cocoachina.com/bbs/read.php?tid-11664-page-1.html>
    以下的这个框架图对接下来的工作会很有帮助
    红色的高亮部分是从屏幕上看到的照片的预览图,除了这个之外,他上面的view都可以去掉。
    要想编辑这些个View,得先找到他们,这里给出了个方法

    #pragma mark get/show the UIView we want
    //Find the view we want in camera structure.
    -(UIView *)findView:(UIView *)aView withName:(NSString *)name{
        Class cl = [aView class];
        NSString *desc = [cl description];

        if ([name isEqualToString:desc])
            return aView;

        for (NSUInteger i = 0; i < [aView.subviews count]; i++)
        {
            UIView *subView = [aView.subviews objectAtIndex:i];
            subView = [self findView:subView withName:name];
            if (subView)
                return subView;
        }
        return nil;
    }

    怎么用,下面这段代码里给出了比较详细的例子

    -(void)addSomeElements:(UIViewController *)viewController{
        //Add the motion view here, PLCameraView and picker.view are both OK
        UIView *PLCameraView=[self findView:viewController.view withName:@"PLCameraView"];
        [PLCameraView addSubview:touchView];//[viewController.view addSubview:self.touchView];//You can also try this one.

        //Add button for Timer capture
        [PLCameraView addSubview:timerButton];
        [PLCameraView addSubview:continuousButton];

        [PLCameraView insertSubview:bottomBarImageView atIndex:1];

        //Used to hide the transiton, last added view will be the topest layer
        [PLCameraView addSubview:myTransitionView];

        //Add label to cropOverlay
        UIView *cropOverlay=[self findView:PLCameraView withName:@"PLCropOverlay"];
        [cropOverlay addSubview:lblWatermark];

        //Get Bottom Bar
        UIView *bottomBar=[self findView:PLCameraView withName:@"PLCropOverlayBottomBar"];

        //Get ImageView For Save
        UIImageView *bottomBarImageForSave = [bottomBar.subviews objectAtIndex:0];

        //Get Button 0
        UIButton *retakeButton=[bottomBarImageForSave.subviews objectAtIndex:0];
        [retakeButton setTitle:@"重拍" forState:UIControlStateNormal];

        //Get Button 1
        UIButton *useButton=[bottomBarImageForSave.subviews objectAtIndex:1];
        [useButton setTitle:@"保存" forState:UIControlStateNormal];

        //Get ImageView For Camera
        UIImageView *bottomBarImageForCamera = [bottomBar.subviews objectAtIndex:1];

        //Set Bottom Bar Image
        UIImage *image=[[UIImage alloc] initWithContentsOfFile:[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"BottomBar.png"]];
        bottomBarImageForCamera.image=image;
        [image release];

        //Get Button 0(The Capture Button)
        UIButton *cameraButton=[bottomBarImageForCamera.subviews objectAtIndex:0];
        [cameraButton addTarget:self action:@selector(hideTouchView) forControlEvents:UIControlEventTouchUpInside];

        //Get Button 1
        UIButton *cancelButton=[bottomBarImageForCamera.subviews objectAtIndex:1];
        [cancelButton setTitle:@"取消" forState:UIControlStateNormal];
        [cancelButton addTarget:self action:@selector(hideTouchView) forControlEvents:UIControlEventTouchUpInside];
    }

    ++++++++++++++++++++++++++++
    兔子说可以这么实现:
    先 picker.showsCameraControls=NO;
    然后自己自定义 picker.cameraOverlayView
    有待验证~
    [picker.topViewController.navigationController pushViewController:controller animated:YES];

    转 http://blog.cnrainbird.com/index.php/2012/03/14/zhong_ding_yi_-uiimagepickercontroller/ 

    以下还有其它的资料:

    http://blog.airsource.co.uk/index.php/2008/11/11/views-of-uiimagepickercontroller/ 

    http://hi.baidu.com/lishiq820/item/81011ee084ed4015595dd822 

  • 相关阅读:
    【HDOJ】2774 Shuffle
    【POJ】2170 Lattice Animals
    【POJ】1084 Square Destroyer
    【POJ】3523 The Morning after Halloween
    【POJ】3134 Power Calculus
    【Latex】如何在Latex中插入伪代码 —— clrscode3e
    【HDOJ】4801 Pocket Cube 的几种解法和优化
    【HDOJ】4080 Stammering Aliens
    【HDOJ】1800 Flying to the Mars
    SQL语法
  • 原文地址:https://www.cnblogs.com/likwo/p/2580669.html
Copyright © 2011-2022 走看看