Objective c 从uiimagepicker拾取图像后,尝试将图像设置为按钮图像

Objective c 从uiimagepicker拾取图像后,尝试将图像设置为按钮图像,objective-c,ios7,uiimage,uiimagepickercontroller,xcode5,Objective C,Ios7,Uiimage,Uiimagepickercontroller,Xcode5,我试图得到这个问题的答案已经有一段时间了。我要做的是启动UIImagePickerController,然后从相机中选择或从转到库中选择。这部分很好用。然后我想将该图像设置为我用来启动图像选择器的按钮顶部的按钮图像。在iOS 6中,它工作得很好。由于iOS 7,图像未设置为按钮图像。我尝试了很多链接,读了很多帖子,甚至浏览了dev论坛,都没有找到答案。这是我在前往苹果技术支持部门之前拼命寻找答案的最后一部分。我希望有人能帮助我。下面是从UIImagePickerController中选择图像后,

我试图得到这个问题的答案已经有一段时间了。我要做的是启动
UIImagePickerController
,然后从相机中选择或从转到库中选择。这部分很好用。然后我想将该图像设置为我用来启动图像选择器的按钮顶部的按钮图像。在iOS 6中,它工作得很好。由于iOS 7,图像未设置为按钮图像。我尝试了很多链接,读了很多帖子,甚至浏览了dev论坛,都没有找到答案。这是我在前往苹果技术支持部门之前拼命寻找答案的最后一部分。我希望有人能帮助我。下面是从
UIImagePickerController
中选择图像后,我用来将图像设置为按钮的代码

- (IBAction)choosePhoto
{
imagePicker = [[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.delegate = self;
imagePicker.allowsEditing = YES;
[self presentViewController:imagePicker animated:YES completion:nil];
}
- (IBAction)takePhoto {

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:picker animated:YES completion:NULL];

}
- (void)imagePickerController:(UIImagePickerController*)picker  didFinishPickingMediaWithInfo:(NSDictionary *)info
 {
 if (imagePicker) {
    self.image = [info objectForKey:UIImagePickerControllerEditedImage];
    [self.choosePhotoButton setImage:self.image forState:UIControlStateNormal];

 } else {

    if (picker) {
        self.image = [info objectForKey:UIImagePickerControllerEditedImage];
     [self.takePhotoButton setImage:self.image forState:UIControlStateNormal];
    }
 }

[self dismissViewControllerAnimated:YES completion:nil];
imagePicker = nil;
}

当前,选择任一按钮后,其上设置的图像为按钮的色调,如下面的屏幕截图所示。两个白色方块是拾取图像的按钮


有人能看看我的代码并帮我解决这个问题吗?

你应该看看UIButton类参考中引用的名为“Buttons”的文档。将图像添加到按钮(系统类型)时,它将添加到标题左侧并作为模板图像,除非将图像的渲染模式设置为UIImageRenderingModeAlwaysOriginal。因此,如果您希望图像位于左侧,可以执行以下操作:

- (IBAction)setImageForSender:(id)sender {
    UIImage *buttonImage = [UIImage imageNamed:@"pic2.jpg"];
    buttonImage = [buttonImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    [sender setImage:buttonImage forState:UIControlStateNormal];
}
如果要在标题下显示图像(并在按钮中居中),请改为设置背景图像。这通常会出现,您不必处理渲染模式

- (IBAction)setImageForSender:(id)sender {
        UIImage *buttonImage = [UIImage imageNamed:@"pic2.jpg"];
        [sender setBackgroundImage:buttonImage forState:UIControlStateNormal];
}
以下是“按钮”文档的相关部分:

图像

使用图像(currentImage)字段,可以指定要显示的图像 显示在按钮的内容中。如果按钮有标题, 此图像显示在其左侧,否则居中。这个 图像不会拉伸或压缩,因此请确保选择图像 这是显示在按钮中的正确大小。请注意,此图像 将自动渲染为按钮内的模板图像, 除非将其渲染模式显式设置为 UIImageRenderingModeAlwaysOriginal。有关详细信息,请参见模板 图像

背景(currentBackgroundImage)字段允许您指定 图像显示在按钮内容后面,并填充整个框架 按钮指定的图像将拉伸以填充按钮(如果是) 太小了。如果它太大,就会被裁掉


如果图像太大,上面文本中的最后一条信息将被裁剪,只有在您为按钮设置了特定大小时才会发生。如果其大小由其固有的内容大小决定(如果您只需在IB中拖出一个按钮而不给它大小限制,这是默认值),它将扩展到图像的大小。

您应该查看UIButton类引用中引用的名为“Buttons”的文档。将图像添加到按钮(系统类型)时,它将添加到标题左侧并作为模板图像,除非将图像的渲染模式设置为UIImageRenderingModeAlwaysOriginal。因此,如果您希望图像位于左侧,可以执行以下操作:

- (IBAction)setImageForSender:(id)sender {
    UIImage *buttonImage = [UIImage imageNamed:@"pic2.jpg"];
    buttonImage = [buttonImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    [sender setImage:buttonImage forState:UIControlStateNormal];
}
如果要在标题下显示图像(并在按钮中居中),请改为设置背景图像。这通常会出现,您不必处理渲染模式

- (IBAction)setImageForSender:(id)sender {
        UIImage *buttonImage = [UIImage imageNamed:@"pic2.jpg"];
        [sender setBackgroundImage:buttonImage forState:UIControlStateNormal];
}
以下是“按钮”文档的相关部分:

图像

使用图像(currentImage)字段,可以指定要显示的图像 显示在按钮的内容中。如果按钮有标题, 此图像显示在其左侧,否则居中。这个 图像不会拉伸或压缩,因此请确保选择图像 这是显示在按钮中的正确大小。请注意,此图像 将自动渲染为按钮内的模板图像, 除非将其渲染模式显式设置为 UIImageRenderingModeAlwaysOriginal。有关详细信息,请参见模板 图像

背景(currentBackgroundImage)字段允许您指定 图像显示在按钮内容后面,并填充整个框架 按钮指定的图像将拉伸以填充按钮(如果是) 太小了。如果它太大,就会被裁掉


如果图像太大,上面文本中的最后一条信息将被裁剪,只有在您为按钮设置了特定大小时才会发生。如果其大小由其固有的内容大小决定(如果您只需在IB中拖出一个按钮而不给它大小限制,这是默认值),它将扩展到图像的大小。

有人愿意贡献吗?“其上设置的图像是按钮的色调,如下面的屏幕截图所示”。。。我能看到的只有白色。。。色调在哪里?你能分享/显示在屏幕上选择图像的前后效果吗?有人愿意贡献吗?“上面设置的图像是按钮的色调颜色,如下面的屏幕截图所示”。。。我能看到的只有白色。。。色彩在哪里?你能分享/展示在屏幕上选择图像前后的效果吗?你是绝对正确的,也是一个救生员。真不敢相信我居然没看见。谢谢你,谢谢你,谢谢你挽救了我的理智。我接受了你的答案并投了赞成票。@XCodeMonkey,是的,当我试图回答你的问题时,我才发现这一点。我还没有赶上所有的iOS 7的变化,其中有很多。你是绝对正确的,也是一个救命恩人。真不敢相信我居然没看见。谢谢你,谢谢你,谢谢你挽救了我的理智。我接受了你的答案并投了赞成票。@XCodeMonkey,是的,当我试图回答你的问题时,我才发现这一点。我还没有赶上所有的iOS 7的变化,其中有