2009-04-01 7 views

ответ

182

Если у вас уже есть IBOutlet для UIImageView, вам нужно всего лишь захватить изображение и вызвать setImage на ресивере (UIImageView). Ниже приведены два примера захвата изображения. Один из Интернета, а другой - в папку «Ресурсы» в Xcode.

UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://farm4.static.flickr.com/3092/2915896504_a88b69c9de.jpg"]]]; 

или

UIImage *image = [UIImage imageNamed: @"cell.png"]; 

После того, как у вас есть изображение, которое вы можете установить UIImageView:

[imageView setImage:image]; 

Линия выше предполагает ImageView ваш IBOutlet.

Вот и все! Если вы хотите получить фантазию, вы можете добавить изображение в UIView, а затем добавить переходы.

P.S. Управление памятью не включено.

+1

спасибо, но это не сработает :( Я удалил изображение в построителе интерфейса, так что UIImageView пуст. то я реализовал это в методе viewDidLoad. Но ничего не происходит. Название изображения указано на 100% правильно. Я также назначил его setImage к розетке. Что-нибудь еще я могу попробовать? – Thanks

+3

Возможно, вы не подключили IBOutlet к ссылке ViewController в IB. Проверьте, что изображение находится в папке «Ресурсы». – Jordan

+0

Я не уверен, что правила necro/влияние на SO, но я знаю, что это помогло мне решить мою проблему. Я использую iOS v5.1, xcode 4.3.2 – Jake

9

Следуя совету Джордана (который должен работать на самом деле), попытайтесь установить UIImageView, чтобы быть видимым:

[imageView setHidden: NO]; 

, а также - не забудьте прикрепить его к главному UIView:

[mainView addSubview: imageView]; 

и принести на фронт:

[mainView bringSubviewToFront: imageView]; 

Надежда комбинируя все эти шаги помогут вам SOLV тайна.

29

Это работало для меня

[ImageViewName setImage:[UIImage imageNamed: @"ImageName.png"]]; 

Убедитесь, что ImageView правильно объявлена ​​в файле .h и связан с элементом IB.

16

Для людей, которые могут пытаться решить эту проблему, не забудьте правильно объявить свойство в своем файле заголовка и синтезировать UIImageView в вашем файле реализации ... Будет сложно установить изображение программно без методов getter и setter.

#import <UIKit/UIKit.h> 

@interface YOURCONTROLLERNAME : UIViewController { 
    IBOutlet UIImageView *imageToDisplay; 
} 

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

@end 

, а затем в вашем .m:

@implementation YOURCONTROLLERNAME 

@synthesize imageToDisplay; 
//etc, rest of code goes here 

Оттуда вы должны быть хорошо использовать что-то вроде следующего, чтобы установить изображение.

[YOURCONTROLLER.imageToDisplay setImage:[UIImage imageNamed:value]]; 
+0

Спасибо! Будучи новичком в xcode и iphones, я вообще не пропускал YOURCONTROLLER перед изображением. – Opy

37

Обратите внимание, что файл NIB не подключает все IBOutlets до тех пор, пока представление не будет добавлено в сцену. Если вы подключаете вещи вручную (что вы можете делать, если что-то происходит в отдельных NIB), это важно иметь в виду.

Так что, если мой вид теста контроллер имеет «ImageView» проводную с помощью кончика пера, это, вероятно, не будет работать:

testCardViewController.imageView.image = [UIImage imageNamed:@"EmptyCard.png"]; 
    [self.view addSubview:testCardViewController.view]; 

Но это будет:

[self.view addSubview:testCardViewController.view]; 
    testCardViewController.imageView.image = [UIImage imageNamed:@"EmptyCard.png"]; 
7

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

- (void)changeImage { 
    backgroundImage.image = [UIImage imageNamed:@"img.png"]; 
} 

вызовов с:

[self performSelectorOnMainThread : @selector(changeImage) withObject:nil waitUntilDone:NO]; 
+2

Yup, это немного меня ... снова ... Можно также использовать 'dispatch_async (dispatch_get_main_queue(),^{backgroundImage.image = [UIImage imageNamed: @" img.png "];})' – Dex

2
UIColor * background = [[UIColor alloc] initWithPatternImage: 
    [UIImage imageNamed:@"anImage.png"]]; 

self.view.backgroundColor = background; 
[background release]; 
+0

Это то же самое для настоящее изображение с помощью фона UIView или свойства изображения UIImageView? – voromax

7

Если вы хотите установить изображение в UIImageView программно, то не забудьте добавить UIImageView в подвид к основному View.

А также не забыл установить ImageView Frame.

здесь код

UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; 

myImage.image = [UIImage imageNamed:@"myImage.png"]; 

[self.view addSubview:myImage]; 
22
imageView.image = [UIImage imageNamed:@"myImage.png"]; 
2

Этот вопрос уже много ответов. К сожалению, никто не работал для меня. Итак, для дополнения я добавлю, что помогло мне:

У меня было несколько изображений с тем же именем - поэтому я заказал их в подпапках. И у меня был полный путь к файлу изображения, который я хотел показать. С полным путем imageNamed: (как используется во всех вышеперечисленных решениях) не работал и был неправильным методом.

Вместо этого я теперь использовать imageWithContentsOfFile: так:

self.myUIImage.image = [UIImage imageWithContentsOfFile:_currentWord.imageFileName]; 

Не знаю, если кто-то читает, что далеко?

Если это так, и этот помог вам: пожалуйста, проголосуйте. ;-)

7

Пример в Swift:

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet var myUIImageView: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    @IBAction func myAction(sender: UIButton) { 
     let newImg: UIImage? = UIImage(named: "profile-picture-name") 
     self.myUIImageView.image = newImg 
    } 

    @IBAction func myAction2(sender: UIButton) { 
     self.myUIImageView.image = nil 
     self.myUIImageView.image = UIImage(data: NSData(contentsOfURL: NSURL(string: "http://url/image.png")!)!) 
    } 

} 
4
myUIImageview.image = UIImage (named:"myImage.png") 
+1

Отмечено как очень низкое качество. Пожалуйста, улучшите его. – Drew

+0

Вы можете сделать это, расширив его. –

5

Не забудьте позвонить sizeToFit() после изменения изображения, если вы затем использовать размер UIImageView, чтобы установить UIScrollView contentSize и/или вычислительных увеличение масштаба

let image = UIImage(named: "testImage") 
imageView.image = image 
imageView.sizeToFit() 
scrollView.contentSize = imageView.bounds.size 
0

Чтобы установить изображение на использовании ImageView ниже строки кода,

self.imgObj.image=[UIImage imageNamed:@"yourImage.png"];       
+0

скопируйте изображение в свой проект, а затем используйте код выше –

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