【问题标题】:UIImagePickerController with 3 Buttons带有 3 个按钮的 UIImagePickerController
【发布时间】:2015-01-08 07:22:45
【问题描述】:

我有 3 个按钮可以激活相机。一旦选择了使用照片,每个人都应该将图像选择器的图像作为背景。但是,我无法让它正常工作。我可以让第一个和最后一个使用图像,或者所有人都可以拍摄图像,但只有第一个的背景发生变化。我包括我目前拥有的东西,谢谢你的帮助。

-(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];
}

【问题讨论】:

    标签: objective-c ios7 uiimagepickercontroller


    【解决方案1】:

    好吧,就这样吧:

    [self.activeButton setImage:[info objectForKey:UIImagePickerControllerOriginalImage]] 
    

    在里面 didFinishPacking 方法。不过在此之前,您应该添加一个 UIButton *activeButton 变量,该变量会在用户每次点击按钮时设置(例如,它可以是 IBAction)。

    此外,如果您使用 IBOutlets 连接 UIButton 的插座,请确保连接。

    【讨论】:

    • 共有 3 个按钮,按下时,一个按钮将启动相机。我想使用相机拍摄的照片并将其作为按下按钮的背景图像。现在我可以让它做背景图像的改变,但不能用相关的按钮。我使用了 self.button.tag == 1 或其他条件。我似乎无法告诉它如何说如果按下此按钮,拍摄它拍摄的照片并将其设为背景图像。
    • 哦,好吧,只需在 didFinishPacking 方法中执行:[self.activeButton setImage:[info objectForKey:UIImagePickerControllerOriginalImage]]。不过在此之前,您应该添加一个 UIButton *activeButton 变量,该变量会在用户每次点击按钮时设置(例如,它可以是 IBAction)。
    • 试图做这样的事情,甚至添加了一个 BOOL 但仍然无法让它工作。我在 IB 上已经有 3 个按钮,并与启动相机的方法和通常的要求相关联。
    • 您是否验证了图像中确实有数据并且它不是零?如果是这样,那么下一步将是确保您的按钮变量实际连接到屏幕上显示的内容 - 它们是 IBOutlets,还是您只是以编程方式创建它们?在任何情况下,调试这对您都非常有帮助,您可能会很快找到解决方案
    • 酷。因此,在 useCamera 函数中,我创建了一个按钮并将其指定为“发送者”。然后,在具有属性的活动按钮上,将其设置为 [NSNumber numberWithInt:button.tag]; (xcode对此抱怨,但它有效)然后在didFinishPicking中,给按钮一个从0开始的标签,它工作得很好。感谢罗伊的帮助!!你为我指明了正确的方向。
    猜你喜欢
    • 2011-01-04
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多