2015-06-11 2 views
-2

У меня есть UIImageView, у которого есть UIImage. Что я хотел бы это когда UIImage щелкают пользователь может выбрать фотографию из тир галереи, чтобы показать в UIImageView вместо изображения по умолчанию я установилПозвольте пользователю изменить изображение к одному из своей галереи

imageView = [[UIImageView alloc] init]; 
    UIImage *myimg = [UIImage imageNamed:@"ProfilePic.png"]; 
    imageView.image=myimg; 
    imageView.frame = CGRectMake(100,0, 80, 50); // pass your frame here 
    [setsView addSubview:imageView]; 
    imageView.layer.backgroundColor=[[UIColor clearColor] CGColor]; 
    imageView.layer.cornerRadius=20; 
    imageView.layer.borderWidth=2.0; 
    imageView.layer.masksToBounds = YES; 
    imageView.layer.borderColor=[[UIColor redColor] CGColor]; 

EDIT: Если я мог бы сделать вид с пучок изображений и при щелчке изображения он изменяет «myimg» на щелканное изображение, если это имеет смысл

EDIT # 2: Также как бы сохранить фотографию, которую пользователь выбрал, и использовать ее при следующем открытии пользователем приложение

ответ

0

Что вам нужно, чтобы реализовать UIImagePickerController с UIImagePickerControllerSourceTypePhotoLibrary в качестве источника.

Здесь есть несколько уроков и вопросов/ответов в stackoverflow.

Проверьте, например, это thread. Он имеет довольно хорошие ответы со ссылками на пример кода от Apple и другими интересными учебниками.

EDIT # 2: Ну, это также имеет много способов быть выполненным, все зависит от вашего варианта использования. Но быстро и просто способ сделать это с помощью NSUserDefaults.

Например: Это, чтобы сохранить изображение,

NSData * data = UIImagePNGRepresentation(yourUImage); 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:data forKey:@"userImage"]; 
[defaults synchronize]; 

и получить изображение

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSData *data = [defaults objectForKey:@"userImage"]; 
    UIImage *image = [UIImage imageWithData:data]; 

    yourImageView.image = image; 
} 
+0

Я отредактировал вопрос, пожалуйста, сделайте еще один взгляд – user4820734

+0

Посмотрите сейчас. Надеюсь, поможет! –

+0

Я пробовал код, но когда я пытаюсь скомпилировать его, он дает мне кучу ошибок. – user4820734

0
UITapGestureRecognizer *tapGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(imageAction:)]; 
        [self.imgPhotoStrand setUserInteractionEnabled:YES]; 
        [self.imgPhotoStrand addGestureRecognizer:tapGesture]; 

-(void)imageAction:(UITapGestureRecognizer *)sender{ 
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Edit Photo" 
                       delegate:self 
                     cancelButtonTitle:@"Cancel" 
                    destructiveButtonTitle:nil 
                     otherButtonTitles:@"Camera", @"Select from Library", nil]; 
        actionSheet.actionSheetStyle = UIActionSheetStyleAutomatic; 
        [actionSheet showInView:self.view]; 
} 

#pragma mark - UIActionSheetDelegate - 

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
      { 
       switch(buttonIndex) 
       { 
        case 0: 
        { 
         if ([UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera]) { 

          if (IS_IPAD) { 
           [[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
            [self camera]; 
           }]; 
          }else if(IS_IPHONE){ 
           [self camera]; 
          } 
         } 
         else 
         { 
          UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:ALERTTITLE message:@"No Camara Found" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
          [alertView show]; 
         } 

        } 
         break; 
        case 1: 
        { 
         if (IS_IPAD) { 
          [[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
           [self library]; 
          }]; 
         }else if(IS_IPHONE){ 
          [self library]; 
         } 

        } 
        default: 
         // Do Nothing......... 
         break; 
       } 
      } 


     - (void)camera { 
      if(![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){ 
       return; 
      } 
      UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
      picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
      //Permetto la modifica delle foto 
      picker.allowsEditing = YES; 
      //Imposto il delegato 
      [picker setDelegate:self]; 

      [self presentViewController:picker animated:YES completion:nil]; 
     } 
- (void)library { 
      //Inizializzo la classe per la gestione della libreria immagine 
      UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
      picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 
      //Permetto la modifica delle foto 
      picker.allowsEditing = YES; 
      //Imposto il delegato 
      [picker setDelegate:self]; 

      [self presentViewController:picker animated:YES completion:nil]; 
     } 


#pragma mark UIImagePickerController Delegate 
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ 

     [self dismissViewControllerAnimated:YES completion:^{ 



       UIImage *image = [info valueForKey:UIImagePickerControllerEditedImage]; 
       self.imgPhotoStrand.image =image; 

     }]; 


    } 
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{ 
     [self dismissViewControllerAnimated:YES completion:nil]; 
    } 
+0

. Я редактировал вопрос, пожалуйста, взгляните еще раз. – user4820734

0

Вы можете использовать UIImagePickerController, чтобы получить изображение из галереи и показать его на просмотр изображения

Этот код приведет вас в галерею

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

И тогда здесь метод делегата для UIImagePickerController

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

    chosenImage = info[UIImagePickerControllerEditedImage]; 
    yourImageView.image = chosenImage; 

    [picker dismissViewControllerAnimated:YES completion:NULL]; 
} 

Это работал для меня. Надеюсь, это поможет.

1] Вы можете использовать настраиваемую кнопку для каждого изображения, чтобы при щелчке по объекту кнопки изображения вызывается, и вы можете изменить свое изображение с помощью щелчка.

2] Для сохранения изображения вы можете использовать NSUserDefaults, так что, даже если приложение закрыто, ваше изображение сохраняется в NSUserDefaults. Так что вы можете использовать его при следующем открытии приложения.

NSData *imageData = UIImageJPEGRepresentation(chosenImage, 1.0); 
encodedString = [imageData base64EncodedStringWithOptions:0]; 
NSLog(@"chosenImage : %@",chosenImage); 

Это даст вам изображение.

Чтобы установить это изображение ImageView вы можете использовать

UIImage *image = [UIImage imageWithData:data]; 
yourImageView.image = image; 

Надеются, что это помогает.

+0

Я не могу использовать контроллеры. Я строю с theos, поэтому все, что я делаю, полностью завершено с помощью кода – user4820734

+0

Спасибо, это потребовало небольшой настройки, и вы забыли упомянуть делегатов, но я получил его на работу. – user4820734

+0

. Я редактировал вопрос, пожалуйста, взгляните еще раз. – user4820734

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