2015-04-10 5 views
1

Я создал приложение для камеры и библиотеки, где я выбираю изображение из своей библиотеки и показываю его на изображении. Но проблема, которая возникает, заключается в том, что после выбора изображения не отображается в imageView.Выбранное изображение не отображается

Вот мой код.

@interface ViewController() 
{ 
    BOOL isImageselected; 
    UIImageView *myImage; 
} 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
    if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 

    UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Error" 
                  message:@"Device has no camera" 
                 delegate:nil 
               cancelButtonTitle:@"OK" 
               otherButtonTitles: nil]; 

     [myAlertView show]; 

    } 

} 

- (void)didReceiveMemoryWarning { 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 

- (IBAction)addPhotoButton:(id)sender { 

    [UIView animateWithDuration:0.3 animations:^{ 
    // animation here 
    self.pickerView.frame = CGRectMake(0.0, 443.0, 320.0, 125.0); 
    }]; 
} 

- (IBAction)cameraButton:(id)sender { 


[UIView animateWithDuration:0.3 animations:^{ 
    // animation here 
    self.pickerView.frame = CGRectMake(0.0, 568.0, 320.0, 125.0); 
}]; 

    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 

    [self presentViewController:picker animated:YES completion:NULL]; 


} 

- (IBAction)uploadImageButton:(id)sender { 

    [UIView animateWithDuration:0.3 animations:^{ 
    // animation here 
    self.pickerView.frame = CGRectMake(0.0, 568.0, 320.0, 125.0); 
}]; 


    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 

    [self presentViewController:picker animated:YES completion:NULL]; 


} 


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

    UIImage *chosenImage = info[UIImagePickerControllerEditedImage]; 
    myImage.image = chosenImage; 
    isImageselected = YES; 
    if (isImageselected == YES) { 

     myImage = [[UIImageView alloc]initWithFrame:CGRectMake(8.0, 8.0, 95.0, 95.0)]; 
     self.addPhotoButton.frame = CGRectMake(106.0, 8.0, 95.0, 95.0); 
    } 

    [picker dismissViewControllerAnimated:YES completion:NULL]; 

} 
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { 

    [picker dismissViewControllerAnimated:YES completion:NULL]; 

} 



@end 

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

ответ

0

Проблема в том, что вы назначаете изображение объекту UIImageView myImage перед созданием myImage.

Попробуйте разместить линию

myImage.image = chosenImage; 

После этой линии:

myImage = [[UIImageView alloc]initWithFrame:CGRectMake(8.0, 8.0, 95.0, 95.0)]; 
+0

Не происходит. Я попытался выделить imageView в viewDidLoad, но я думаю, что imageView не создает. @Vladimir – iPeter

+0

Добавили ли вы свое изображение для просмотра? [self.view addSubview: myImage]; –

+0

Упс !!!! Это была главная проблема. @ Владимир Мне нужно учиться. :(Я такой новичок. :( – iPeter

0

вы не можете не назначить объект до его создания, так что просто изменить код немного как

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


    isImageselected = YES; 
    if (isImageselected == YES) { 

     myImage = [[UIImageView alloc]initWithFrame:CGRectMake(8.0, 8.0, 95.0, 95.0)]; 
     [self.view addSubView:myImage]; 
     self.addPhotoButton.frame = CGRectMake(106.0, 8.0, 95.0, 95.0); 
     UIImage *chosenImage = info[UIImagePickerControllerEditedImage]; 
     myImage.image = chosenImage; 
    } 

    [picker dismissViewControllerAnimated:YES completion:NULL]; 

} 
+0

Нет, чувак! Я понял, где я ошибся. Я исправил его, но это не происходит. не создает. @Retro – iPeter

+0

Да, поскольку вы создали imageView, вы должны добавить его как subView of self.view – Retro

0

Это потому, что после добавления выбранной фотографии в myImage вы повторно выделяете myImage, это создает новый объект myImage. Попробуйте это

UIImage *chosenImage = info[UIImagePickerControllerEditedImage]; 
isImageselected = YES; 
if (isImageselected == YES) { 

    myImage = [[UIImageView alloc]initWithFrame:CGRectMake(8.0, 8.0, 95.0, 95.0)]; 
.... 
myImage.image = chosenImage; } 
Смежные вопросы