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 

  • 相关阅读:
    MongoDB数据导入hbase + 代码
    Hbase批量插入优化记录
    net.sf.fjep.fatjar_0.0.32 eclipse4.x 可以用的jar包
    %E3%80%90%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E3%80%91
    学习《深度学习入门:基于Python的理论与实现》高清中文版PDF+源代码
    《Python生物信息学数据管理》中文PDF+英文PDF+代码
    推荐《R数据可视化手册》高清英文版PDF+中文版PDF+源代码
    学习优化《机器学习与优化》中文PDF+英文PDF
    入门python:《Python编程从入门到实践》中文PDF+英文PDF+代码学习
    推荐《SQL基础教程(第2版)》中文PDF+源代码+习题答案
  • 原文地址:https://www.cnblogs.com/likwo/p/2580669.html
Copyright © 2011-2022 走看看