gpt4 book ai didi

iphone - 相机叠加图片

转载 作者:可可西里 更新时间:2023-11-01 03:29:09 26 4
gpt4 key购买 nike

编辑3

好消息和坏消息。好消息是,在 Connections Inspector 中,通过断开覆盖 UIToolbar 并连接 UIImageview,我看到了 theKing,但随后——坏消息——我没有看到我也需要的 UIToolbar .所以现在的问题是,当他/她在这里完成后,用户如何返回调用 VC?工具栏和图像如何成为覆盖的一部分,或者“返回按钮”工具栏如何在非覆盖 View 上,等等?或者如何让工具栏和图像同时显示在 OverlayViewController 上?

编辑3

编辑2

OverlayViewController.m 中的

setupImagePicker

- (void)setupImagePicker:(UIImagePickerControllerSourceType)sourceType
{
self.imagePickerController.sourceType = sourceType;

if (sourceType == UIImagePickerControllerSourceTypeCamera)
{
// user wants to use the camera interface
//
self.imagePickerController.showsCameraControls = NO;

if ([[self.imagePickerController.cameraOverlayView subviews] count] == 0)
{
// setup our custom overlay view for the camera
//
// ensure that our custom view's frame fits within the parent frame
CGRect overlayViewFrame = self.imagePickerController.cameraOverlayView.frame;
CGRect newFrame = CGRectMake(0.0,
CGRectGetHeight(overlayViewFrame) -
self.view.frame.size.height - 10.0,
CGRectGetWidth(overlayViewFrame),
self.view.frame.size.height + 10.0);
self.view.frame = newFrame;
[self.imagePickerController.cameraOverlayView addSubview:self.view];
}
}
}

编辑2

编辑1

This is the PhotoPicker sample code link .

编辑1

编辑 0

有没有人在 iPhone 而不是 iPad 上试过这个?我没有 iPhone,但我今天读了 Matt Neuburg 的书,他说 UIImagePicker 在这两种设备上的工作方式不同。

编辑 0

我在 UIImagePicker 的相机 View 中看不到我试图覆盖的图像。无论我如何添加 IBOutlet,作为属性或不作为属性,图像都不会显示,但覆盖的工具栏显示正常。为什么?

带有 theKing IBOutlet 的 OverlayViewController.h 添加到 Apple 的示例代码,然后暂时注释掉。

#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioServices.h>

@protocol OverlayViewControllerDelegate;

@interface OverlayViewController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate>
{
// IBOutlet UIImageView* theKing; ******** temporarily commented out
id <OverlayViewControllerDelegate> delegate;
}

@property (nonatomic, assign) id <OverlayViewControllerDelegate> delegate;
@property (nonatomic, retain) UIImagePickerController *imagePickerController;

- (void)setupImagePicker:(UIImagePickerControllerSourceType)sourceType;

@end

@protocol OverlayViewControllerDelegate
- (void)didTakePicture:(UIImage *)picture;
- (void)didFinishWithCamera;
@end

OverlayViewController.m,将 theKing IBOutlet 的 property 添加到 Apple 的示例代码中。

#import "OverlayViewController.h"

enum
{
kOneShot, // user wants to take a delayed single shot
kRepeatingShot // user wants to take repeating shots
};

@interface OverlayViewController ( )

@property (assign) SystemSoundID tickSound;

@property (nonatomic, retain) IBOutlet UIImageView* theKing; // added *********
@property (nonatomic, retain) IBOutlet UIBarButtonItem *takePictureButton;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *startStopButton;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *timedButton;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *cancelButton;

@property (nonatomic, retain) NSTimer *tickTimer;
@property (nonatomic, retain) NSTimer *cameraTimer;

当我在 iPhone 上执行代码时,我看不到图像 theKing。下面是我添加的 Nib 的 View ,显示了一些已建立的连接。没有错误被抛出,但我看不到图像,只有 UIToolbar 已经添加。

nib of overlay controller

最佳答案

更新

我现在更新了它并尝试复制您在问题中所做的事情。我包含了 .h/.m 和 theKing@2x.png 的完整源代码。创建一个新项目并将源代码粘贴到文件中并添加 theKing@2x.png。一切都以编程方式完成 - 除了将 View 嵌入导航 Controller 之外,您无需在界面构建器中进行任何设置。

这是theKing@2x.png - http://i.imgur.com/0DrM7si.png

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>

@end

ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

// assign action to button
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
myButton.frame = CGRectMake(0, 0, 200, 60);
myButton.center = self.view.center;
[myButton addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchUpInside];
[myButton setTitle:@"Image Picker" forState:UIControlStateNormal];

[self.view addSubview:myButton];
}

- (void)buttonPress:(id)sender {
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

// alert the user that the camera can't be accessed
UIAlertView *noCameraAlert = [[UIAlertView alloc] initWithTitle:@"No Camera" message:@"Unable to access the camera!" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil, nil];
[noCameraAlert show];

} else {

// prepare imagePicker view
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.delegate = self;
imagePicker.allowsEditing = NO;
imagePicker.showsCameraControls = NO;

// create view for overlay
CGRect overlayRect = CGRectMake(0, 0, imagePicker.view.frame.size.width, imagePicker.view.frame.size.height);
UIView *overlayView = [[UIView alloc] initWithFrame:overlayRect];

// prepare the image to overlay
UIImageView *overlayImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"theKing"]];
overlayImage.center = overlayView.center;
overlayImage.alpha = 0.5;

// prepare toolbar for overlay
UIToolbar *overlayToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 600, overlayView.frame.size.width, 40)];
overlayToolbar.center = CGPointMake(overlayView.center.x, overlayView.frame.size.height - 20);
overlayToolbar.barStyle = UIBarStyleBlack;

UIBarButtonItem *takePictureButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(takePictureButtonPressed:)];
UIBarButtonItem *flexibleBarSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
flexibleBarSpace.width = 1000;
UIBarButtonItem *startStopButton = [[UIBarButtonItem alloc] initWithTitle:@"Snap" style:UIBarButtonItemStyleBordered target:self action:@selector(startStopButtonPressed:)];
UIBarButtonItem *timedButton = [[UIBarButtonItem alloc]initWithTitle:@"Timed" style:UIBarButtonItemStyleBordered target:self action: @selector(timedButtonPressed:)];
UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action: @selector(cancelButtonPressed:)];

overlayToolbar.items = [NSArray arrayWithObjects:takePictureButton, flexibleBarSpace, startStopButton, timedButton, cancelButton, nil];


[overlayView addSubview:overlayImage];
[overlayView addSubview:overlayToolbar];

// add the image as the overlay
[imagePicker setCameraOverlayView:overlayView];

// display imagePicker
[self.navigationController presentViewController:imagePicker animated:YES completion:nil];
}
}

#pragma mark - UIBarButton Selectors

- (void)takePictureButtonPressed:(id)sender {
NSLog(@"takePictureButtonPressed...");
// TODO: take picture!
}

- (void)startStopButtonPressed:(id)sender {
NSLog(@"startStopButtonPressed...");
// TODO: make this do something
}

- (void)timedButtonPressed:(id)sender {
NSLog(@"timedButtonPressed...");
// TODO: implement timer before calling takePictureButtonPressed
}

- (void)cancelButtonPressed:(id)sender {
NSLog(@"cancelButtonPressed");
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
}

#pragma mark - UIImagePickerController Delegate Methods

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)editingInfo {

// determine if the user selected or took a new photo
UIImage *selectedImage;
if ([editingInfo objectForKey:UIImagePickerControllerOriginalImage]) selectedImage = (UIImage *)[editingInfo objectForKey:UIImagePickerControllerOriginalImage];
else if ([editingInfo objectForKey:UIImagePickerControllerEditedImage]) selectedImage = (UIImage *)[editingInfo objectForKey:UIImagePickerControllerEditedImage];

// TODO: Do something with selectedImage (put it in a UIImageView

// dismiss the imagePicker
[picker.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

截图

这是我运行它时的样子。 Screenshot

这是否满足您的应用要求?

关于iphone - 相机叠加图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15623754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com