Objective c 带3个按钮的UIImagePickerController
我有3个按钮可以启动相机。选择“使用照片”后,每个人都应将图像选择器的图像作为背景。然而,我无法让它正常工作。我可以让第一个和最后一个使用图像,或者所有人都可以拍摄图像,但只有第一个的背景改变。我包括我现在所拥有的,谢谢你的帮助Objective c 带3个按钮的UIImagePickerController,objective-c,ios7,uiimagepickercontroller,Objective C,Ios7,Uiimagepickercontroller,我有3个按钮可以启动相机。选择“使用照片”后,每个人都应将图像选择器的图像作为背景。然而,我无法让它正常工作。我可以让第一个和最后一个使用图像,或者所有人都可以拍摄图像,但只有第一个的背景改变。我包括我现在所拥有的,谢谢你的帮助 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { NSString *media
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSString *mediaType = info[UIImagePickerControllerMediaType];
[self dismissViewControllerAnimated:YES completion:nil];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
UIImage *image = info[UIImagePickerControllerOriginalImage];
_imageView.image = image;
if (_newMedia)
UIImageWriteToSavedPhotosAlbum(image,
self,
@selector(image:finishedSavingWithError:contextInfo:),
nil);
self.camera1.tag = 1;
self.camera2.tag = 1;
self.camera3.tag = 1;
if ([self.camera1 isEqual:self.camera1]) {
[self.camera1 setBackgroundImage:image forState:UIControlStateNormal];
[self.camera1 setTitle:@"" forState:UIControlStateNormal];
[self.camera1 setImage:nil forState:UIControlStateNormal];
self.camera1.tag++;
} else if ([self.camera2 isEqual:self.camera2]) {
[self.camera2 setBackgroundImage:image forState:UIControlStateNormal];
[self.camera2 setTitle:@"" forState:UIControlStateNormal];
[self.camera2 setImage:nil forState:UIControlStateNormal];
} else if([self.camera3 isEqual:self.camera3]) {
[self.self.camera3 setBackgroundImage:image forState:UIControlStateNormal];
[self.self.camera3 setTitle:@"" forState:UIControlStateNormal];
[self.self.camera3 setImage:nil forState:UIControlStateNormal];
}
}
else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
{
// not using video...don't need anything here
}
}
-(void)useCamera:(id)sender {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:picker animated:YES completion:nil];
}
哦,好吧,只要做:
[self.activeButton setImage:[info objectForKey:UIImagePickerControllerOriginalImage]]
内部
didfishpacking
方法。在此之前,您应该添加一个UIButton*activeButton变量,该变量在用户每次点击按钮时设置(例如,它可以是iAction)
另外,如果您使用IBOutlets连接了UIButton的插座,请确保您连接了UIButton的插座。共有3个按钮,按下时,一个按钮将启动摄像头。我想使用相机拍摄的照片,并将其作为按下按钮的背景图像。现在,我可以让它做背景图像的变化,但不与相关的按钮。我使用了self.button.tag==1或其他条件。我似乎无法向它展示如果按下此按钮,如何将它拍摄的照片作为背景图像。哦,好的,在didfishpacking方法中执行:[self.activeButton setImage:[info objectForKey:UIImagePickerControllerOriginalImage]]。在此之前,您应该添加一个UIButton*activeButton变量,该变量在用户每次点击按钮时设置(例如,它可以是iAction)。尝试这样做时,甚至添加了一个BOOL,但仍然无法使其工作。我的IB上已经有3个按钮,它们与启动相机的方法和通常的要求相关联。你是否验证了图像中确实有数据,这不是零?如果是这样的话,那么下一步将是确保您的按钮变量实际连接到屏幕上显示的内容-它们是IBOutlets,还是您只是通过编程方式创建的?在任何情况下,调试这将对您非常有帮助,并且您可能能够非常快速地找到解决方案。因此,在useCamera函数中,我创建了一个按钮并将其指定为“sender”。然后,在具有属性的活动按钮上,将其设置为[NSNumber numberWithInt:button.tag];(xcode对此表示不满,但它是有效的)然后在didFinishPicking中,给按钮一个从0开始的标签,效果很好。谢谢你的帮助,罗伊!!你给我指明了正确的方向。