Відповіді:
Якщо у вас вже є 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, а потім додати переходи.
Управління пам'яттю PS не входить.
Зауважте, що файл NIB не з'єднує всі IBOutlets до тих пір, поки вигляд не буде додано на сцену. Якщо ви під'єднуєте речі вручну (що ви можете зробити, якщо вони знаходяться в окремих НІБ), це важливо пам’ятати.
Тож якщо у мого контролера тестового перегляду є "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"];
imageView.image = [UIImage imageNamed:@"myImage.png"];
Для того, щоб люди, які можуть це погуглити, намагалися вирішити свою проблему, пам’ятайте, що належним чином оголосити властивість у вашому файлі заголовка та синтезувати UIImageView у вашому файлі реалізації ... Буде важко встановити зображення програмно без геттерні та сетерні методи.
#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]];
Приклад у 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")!)!)
}
}
Дотримуючись порад Джордана (який повинен працювати насправді), спробуйте встановити видимість UIImageView:
[imageView setHidden: NO];
а також - не забудьте прикріпити його до основного UIView:
[mainView addSubview: imageView];
і вивести на фронт:
[mainView bringSubviewToFront: imageView];
Сподіваюся, що поєднання всіх цих кроків допоможе вам розгадати таємницю.
Моя проблема полягала в тому, що я спробував змінити зображення на інший потік. Мені було так:
- (void)changeImage {
backgroundImage.image = [UIImage imageNamed:@"img.png"];
}
Телефонуйте за допомогою:
[self performSelectorOnMainThread : @selector(changeImage) withObject:nil waitUntilDone:NO];
dispatch_async(dispatch_get_main_queue(), ^{backgroundImage.image = [UIImage imageNamed:@"img.png"];})
Якщо ви хочете встановити зображення UIImageView
програмно, то не забудьте додати UIImageView
як основний вигляд SubView .
А також не забув встановити ImageView Frame .
ось код
UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
myImage.image = [UIImage imageNamed:@"myImage.png"];
[self.view addSubview:myImage];
Не забудьте зателефонувати sizeToFit()
після зміни зображення, якщо ви використовуєте розмір UIImageView, щоб встановити UIScrollView contentSize та / або розрахувати масштаб масштабування
let image = UIImage(named: "testImage")
imageView.image = image
imageView.sizeToFit()
scrollView.contentSize = imageView.bounds.size
myUIImageview.image = UIImage (named:"myImage.png")
UIColor * background = [[UIColor alloc] initWithPatternImage:
[UIImage imageNamed:@"anImage.png"]];
self.view.backgroundColor = background;
[background release];
На це запитання вже було багато відповідей. На жаль, ніхто не працював на мене. Тож заради fullnes додаю те, що мені допомогло:
У мене було кілька зображень з однаковою назвою - тому я замовив їх у підпапках. У мене був повний шлях до файлу зображень, який я хотів показати. З повним шляхом imageNamed:
(як це було використано у всіх рішеннях вище) не спрацював і був неправильним методом.
Натомість я зараз використовую imageWithContentsOfFile:
так:
self.myUIImage.image = [UIImage imageWithContentsOfFile:_currentWord.imageFileName];
Не знаю, чи хтось читає так далеко?
Якщо так, і цей вам допомог: будь ласка, проголосуйте. ;-)
Щоб встановити зображення на imageView, використовуйте рядок коду,
self.imgObj.image=[UIImage imageNamed:@"yourImage.png"];