无法更改UIButton ios的背景

  • 本文关键字:ios 背景 UIButton ios
  • 更新时间 :
  • 英文 :


当用户单击具有我从故事板放置的背景图像的UIButton时,它将显示一个UIActionSheet,允许用户从选项中进行选择:

1)从相机拍摄照片

2)图片来自画廊照片。

例如,如果他选择

从图库照片中挑选图片,当他选择图像并返回视图并显示图像时,我想将 UIButton 的背景图像更改为我想以编程方式放置的另一个图像。

这是ViewController的代码。

#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UIImagePickerControllerDelegate,UINavigationControllerDelegate> {
UIImageView * imageView;
UIToolbar *toolbar ;
}
@property (weak, nonatomic) IBOutlet UIBarButtonItem *ButtonPicture;@property (weak,  nonatomic) IBOutlet UIToolbar *toolbar;
@property (nonatomic, retain) IBOutlet UIImageView * imageView;
- (IBAction)PictureButton:(UIButton *)sender;

@end

这是ViewController.m的代码

- (IBAction)PictureButton:(UIButton *)sender {   
NSLog(@"Click button take picture in toolbar view 1");
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Photo" 
                                                         delegate:self
                                                cancelButtonTitle:@"Cancel"
                                           destructiveButtonTitle:nil
                                                otherButtonTitles:@"Picture From Camera", @"Picture From Gallery", nil];
[actionSheet setTag:1001];
[actionSheet showInView:self.view];
}
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
switch (buttonIndex)
{
    case 0: {
        // Take a picture from camera
        UIImagePickerController * picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        [self presentModalViewController:picker animated:YES];
    }
    break;
    case 1: {
        // take a picture from gallery photos
        UIImagePickerController * picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
        [self.view addSubview:toolbar];
        [self presentModalViewController:picker animated:YES];
    }
    break;
    }
    -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [self dismissViewControllerAnimated:YES completion:nil];
    UIImage *gotImage =
    [info objectForKey:UIImagePickerControllerOriginalImage];
[PictureButton setBackgroundImage:gotImage forState:UIControlStateNormal];

}

当我从库中选择图像时,我返回到视图,我显示我选择的图像,但UIBUtton背景不会更改为另一个背景。 谢谢

试试这个,

[ButtonPicture setBackgroundImage:gotImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
这是

(IBAction)PictureButton:(UIButton *)sender;方法,您已经与故事板连接起来了。和一样,你必须与UIBarbuttonItam property一样。 ButtonPicture(not PictureButton) .所以你可以试试这个。

-(void)changeImage:(UIImage*)newImage
{
      UIImage *configImage = newImage;
      UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0,0, self.ButtonPicture.width, 32)];
      [btn setBackgroundImage:configImage forState:UIControlStateNormal];
      [btn addTarget:self.ButtonPicture.target action:self.ButtonPicture.action       forControlEvents:UIControlEventTouchUpInside];    
      self.ButtonPicture.customView = btn;
}

调用此方法而不是 [PictureButton setBackgroundImage:gotImage forState:UIControlStateNormal];

点击哪个按钮时,您的操作表被调用?是UIBarButtonItem *ButtonPicture吗?如果是,则将背景图像设置为[ButtonPicture setBackgroundImage:gotImage forState:UIControlStateNormal];

最新更新