2014-01-07 3 views
0

Когда пользователь нажимает на UIButton, что имеет фоновое изображение, которое я положил из раскадровки, он будет отображать UIActionSheet позволяя пользователю выбрать один из вариантов:не может изменить Фон UIButton КСН

1) Сфотографируйте от камеры

2) Изображение из галереи фотографий.

Если, например, он выбирает фотографию из фотографий галереи, когда он выбирает изображение и возвращается к представлению и отображает изображение, я хочу изменить фоновое изображение UIButton на другое, которое я хочу поместите его программно.

Вот код ViewController.h

#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 не изменится на другой фон. Благодаря

+2

Что такое 'PictureButton'? где вы его заявили? – Mani

+0

в «ViewController.h» Я ставлю это так: - (IBAction) PictureButton: (UIButton *) отправитель; – user3162198

ответ

1

Попробуйте это,

[ButtonPicture setBackgroundImage:gotImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
+0

имя фонового изображения fisrt - background1.png Я помещаю его в настройки изображения растровых изображений UIButton, и теперь я хочу изменить фон фонового изображения на background2.png программно, когда я выбираю изображение из библиотеки и возвращаюсь к представлению – user3162198

0

Это (IBAction)PictureButton:(UIButton *)sender; метод, вы проводная с раскадровку. Как и вы, вы должны подключиться с помощью UIBarbuttonItam property as. 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];.

0

при нажатии на кнопку, на которую вызывается ваш лист действий? Это UIBarButtonItem * ButtonPicture? если да, то установите фоновое изображение как [ButtonPicture setBackgroundImage:gotImage forState:UIControlStateNormal];

Смежные вопросы