

iPhoneのカメラアプリのシャッターUIの透明化方法について、  
教えてください。

下記、参考画像のように、作成したカメラアプリだとシャッターUIの  
上下が黒帯が表示されてしまうのですが、この部分を透明にしたいです。  
（透明にしているカメラアプリがあったので、できると思いまして）

シャッターUIの上下の黒帯を透明にする、サンプルプログラムのサイトや  
プログラムをご存知の人がいましたら、教えていただけると助かりますm(_ _)m

下記サイトにあるカメラアプリを実現したいと思っております

↓カメラアプリの撮影ボタンバーを透明化する事が出来るカメラアプリ  
<http://iphonedatu.blog.fc2.com/blog-entry-249.html>

カメラアプリのプログラムは、下記サンプルプログラムをほぼ使用しております。

↓カメラアプリのサンプルプログラム  
<http://iphone.moo.jp/app/?p=213>

[補足]  
このサンプルプログラムでは、シャッターUIの上下の黒帯が半透明になっているのですが  
自作のプログラムにベーストしたら、シャッターUIの上下の黒帯の半透明処理は、  
再現しませんでした。  
上記サンプルプログラムのこの部分が、シャッターUIの上下の黒帯が半透明の指示をしている  
など、もし分かる方がいましたら教えて頂けると幸いです

▼シャッターUIの上下黒帯の参考イメージ  
![画像の説明をここに入力](https://i.stack.imgur.com/i1EPo.png)

▼プログラム抜粋

[code]

    - (void)viewDidLoad {
        [super viewDidLoad];
        imagePicker = [[UIImagePickerController alloc] init];
        imagePicker.delegate = self;
    }
    
    -(IBAction)openCamera
    {
        if( [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){
            UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"hk.png"]];
            imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
            imagePicker.cameraOverlayView = imageView;      
            [self presentModalViewController:imagePicker animated:YES];
        }
    }
    
[/code]


CC BY-SA 3.0
2015-03-14T18:04:07.660
7919
2015-09-12T08:52:57.070
2015-03-15T11:29:46.557
8834
8834
question
ios objective-c xcode
xcode(iPhone)のカメラアプリのシャッターUIの透明化


そのUIViewControllerに以下のメソッドを加えて実際に写真を保存してみてください。

[code]

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
    
      UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
    }
    
[/code]

もし、あなたが黒帯と言っているものの背面もカメラの撮影領域であるなら、その部分も写真として保存されるはずですが、見えている部分のみの画像が保存されたならば、半透明になっていないのではなく、ただ単に帯の後ろそのものが黒だと考えられます。

* * *

**追記** : カメラUIのカスタマイズについて

参考画面

![画像の説明をここに入力](https://i.stack.imgur.com/NBCuC.jpg)

カメラUIを自作することでこのようにしていくことは可能ですが、撮影プレビューは上寄せに表示されますし、「撮影」「キャンセル」「モード切替」など、各種処理もボタンとコードを結びつけて自作していく必要があります。

ViewController.m

[code]

    #import <UIKit/UIKit.h>
    
    @interface ViewController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate>
    
    @end
    
[/code]

ViewController.m

[code]

    #import "ViewController.h"
    
    @interface ViewController ()
    
    @property (strong, nonatomic) UIImagePickerController *imagePickerController;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
    
      [super viewDidLoad];
    }
    
    - (IBAction)openCamera:(id)sender {
    
      BOOL cameraIsAvailable = [UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera];
    
      if(cameraIsAvailable){
    
        if (!self.imagePickerController) {
    
          self.imagePickerController = [[UIImagePickerController alloc] init];
          self.imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
          self.imagePickerController.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType: self.imagePickerController.sourceType];
          self.imagePickerController.delegate = self;
          self.imagePickerController.allowsEditing = NO;
          self.imagePickerController.showsCameraControls = NO;
    
          UIButton *button = [UIButton buttonWithType: UIButtonTypeCustom];
          button.frame = CGRectMake(20, 20, 120, 44);
          button.backgroundColor = [UIColor clearColor];
          button.layer.borderColor = [UIColor whiteColor].CGColor;
          button.layer.borderWidth = 1.0f;
          button.layer.cornerRadius = 4.0f;
          [button setTitleColor: [UIColor whiteColor] forState: UIControlStateNormal];
          [button setTitle: @"Capture" forState: UIControlStateNormal];
          [button addTarget: self action: @selector(didTapCaptureButton:) forControlEvents: UIControlEventTouchUpInside];
          self.imagePickerController.cameraOverlayView = button;
        }
    
        [self presentViewController: self.imagePickerController animated: YES completion: nil];
      }
    }
    
    - (void)didTapCaptureButton:(UIButton *)button {
    
      [self.imagePickerController takePicture];
    }
    
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    
      UIImage *originalImage = info[UIImagePickerControllerOriginalImage];
      UIImageWriteToSavedPhotosAlbum(originalImage, self, @selector(didCompleteSaveImage:error:contextInfo:), nil);
    }
    
    - (void)didCompleteSaveImage:(UIImage *)image error:(NSError *)error contextInfo:(void *)contextInfo {
    
      if (error) {
    
        NSLog(@"Error: %@", error);
        return;
      }
    
      [self.imagePickerController dismissViewControllerAnimated: YES completion:^{
    
        NSLog(@"Saved a picture.");
        self.imagePickerController = nil;
      }];
    }
    
    @end
    
[/code]


CC BY-SA 3.0
2015-03-14T20:18:35.337
7922
2015-03-16T05:08:13.097
2015-03-16T05:08:13.097
7919
answer