当用户单击具有我从故事板放置的背景图像的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];