2013-09-10 6 views
0

Я играю с Xcode 5 и раскадровки. Я нахожусь в точке, где я захватил UIImage с помощью камеры, но я не могу понять, как отображать изображение на телефоне после того, как я его захватил. Я указал IBOutlet UIImageView и установил его значение для изображения, которое я захватил с камеры, но это, кажется, ничего не делает.Как я могу показать UIImage в UIImageView?

Это мой интерфейс:

@interface HCViewController() 

@property (nonatomic, retain) IBOutlet UIImageView *image; 

@end 

И это мой didFinishPickingWithMediaInfo метод:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    // Get the picture from the camera 
    UIImage *imageFromCamera = [info objectForKey:UIImagePickerControllerEditedImage]; 

    // Set the IBOutlet UIImageView to the picture from the camera 
    // This does nothing as far as I can tell 
    self.image = [[UIImageView alloc] initWithImage:imageFromCamera]; 

    // Let's take a closer look at this 
    NSLog(@"%@", self.image); 

    // Close the camera view controller 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

Это то, что я вижу в регистраторе для self.image:

2013-09-10 17:17:45.169 YourMom[6136:60b] <UIImageView: 0x1556fdc0; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <CALayer: 0x155d5b10>> 

Моей раскадровки имеет контроллер просмотра с двумя различными сценами, которые можно отбросить назад и Rth. Обе сцены имеют «вид» с «представлением изображения» в качестве подпункта. Каждый из них имеет «Релейные выходы», которые, как представляется, подключены к переменной image, которую я определил в своем интерфейсе. Однако просто установка значения image не изменяет отображение телефона.

После прочтения этого вопроса SO: How can I change the image displayed in an UIImageView programmatically? Я пробовал [self.image setImage:image], но это тоже ничего не делало. Как сообщить Xcode, что я хочу, чтобы image отображался в представлении?

ответ

3

Ваша ошибка состоит в следующем:

self.image = [[UIImageView alloc] initWithImage:imageFromCamera]; 

Поскольку вы используете раскадровки ваш UIImageView будет инициализирован для вас. Выполняя эту строку кода, вы выбрасываете старый UIImageView и заменяете его новым UIImageView, который не имеет фрейма.

Вам просто нужно сделать это:

[self.image setImage:imageFromCamera] 

Кроме того, вы можете получать неправильное изображение от информации. Попробуйте UIImagePickerControllerOriginalImage вместо UIImagePickerControllerEditedImage. Надеюсь, это полезно, приветствия!

+0

Вы были правы по обоим пунктам. Огромное спасибо. Мне нравится StackOverflow! –

+1

Добро пожаловать. YourMom - отличное приложение lol :) – Arcanfel

1
// this is your delegate method to set the image taken from your camera 

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

// Get the picture from the camera 
    UIImage *imageFromCamera = [info objectForKey:UIImagePickerControllerEditedImage]; 

// alloc image view as you have to set it image on it 
    UIImageView *imgView = [[UIImageView alloc]init]; 
    imgView.image = imageFromCamera; 

// you can also set the image on button like this 
    UIImage *imageFromCamera = [info objectForKey:UIImagePickerControllerEditedImage]; 
// imgBtn is UIButton property 
    [self.imgBtn setImage:imageFromCamera forState:UIControlStateNormal]; 

// Let's take a closer look at this 
    NSLog(@"%@", self.image); 

// Close the camera view controller 
    [self dismissViewControllerAnimated:YES completion:nil]; 

} 
1

UIImage View имеет свойство image.

Это свойство типа UIImage.

Так что если у вас есть UIImage, то вы можете установить свойство следующим образом:

imageView.image = image; 
0

Вы можете попробовать этот код, чтобы отобразить изображение.

imageView.image : UIImage = UIImage(named: "YourImageName") 

Надеюсь, это поможет вам в решении ваших проблем.

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