Как я могу изменить изображение, отображаемое в программном обеспечении UIImageView?
У меня есть IBOutlet
до UIImageView
, но когда я смотрю на документ UIImageView
, я не вижу никакого намека на его программное изменение. Должен ли я извлекать объект UIImage
из этого UIImageView
?
Ответы
Ответ 1
Если у вас уже есть 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. Управление памятью не включено.
Ответ 2
Обратите внимание, что файл 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"];
Ответ 3
Это сработало для меня
[ImageViewName setImage:[UIImage imageNamed: @"ImageName.png"]];
Убедитесь, что ImageView правильно объявлен в файле .h и связан с элементом IB.
Ответ 4
imageView.image = [UIImage imageNamed:@"myImage.png"];
Ответ 5
Для людей, которые могут пытаться решить эту проблему, не забудьте правильно объявить свойство в своем заголовочном файле и синтезировать 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]];
Ответ 6
Следуя совету Иордании (который должен работать на самом деле), попробуйте установить видимость UIImageView:
[imageView setHidden: NO];
а также - не забудьте прикрепить его к главному UIView:
[mainView addSubview: imageView];
и вывести на передний план:
[mainView bringSubviewToFront: imageView];
Надежда, сочетающая все эти шаги, поможет вам решить загадку.
Ответ 7
Моя проблема заключалась в том, что я попытался изменить изображение в другом потоке. Мне это понравилось:
- (void)changeImage {
backgroundImage.image = [UIImage imageNamed:@"img.png"];
}
Позвонить с помощью:
[self performSelectorOnMainThread : @selector(changeImage) withObject:nil waitUntilDone:NO];
Ответ 8
Пример в 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")!)!)
}
}
Ответ 9
Если вы хотите программно установить образ UIImageView
, то Dont Forget добавить UIImageView
в качестве SubView к основному представлению.
А также не забыл установить ImageView Frame.
вот код
UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
myImage.image = [UIImage imageNamed:@"myImage.png"];
[self.view addSubview:myImage];
Ответ 10
Не забудьте вызвать sizeToFit()
после изменения изображения, если затем использовать размер UIImageView для установки UIScrollView contentSize и/или вычисления масштаба масштабирования
let image = UIImage(named: "testImage")
imageView.image = image
imageView.sizeToFit()
scrollView.contentSize = imageView.bounds.size
Ответ 11
myUIImageview.image = UIImage (named:"myImage.png")
Ответ 12
UIColor * background = [[UIColor alloc] initWithPatternImage:
[UIImage imageNamed:@"anImage.png"]];
self.view.backgroundColor = background;
[background release];
Ответ 13
У этого вопроса было много ответов. К сожалению, никто не работал у меня.
Итак, ради полноты я добавляю то, что помогло мне:
У меня было несколько изображений с тем же именем, поэтому я заказал их в подпапках. И у меня был полный путь к файлу изображения, который я хотел показать. Полный путь imageNamed:
(как используется во всех решениях выше) не работал и был неправильным методом.
Вместо этого я теперь использую imageWithContentsOfFile:
следующим образом:
self.myUIImage.image = [UIImage imageWithContentsOfFile:_currentWord.imageFileName];
Не знаю, читает ли кто-нибудь далеко?
Если так, и это помогло вам: пожалуйста, проголосуйте.
; -)
Ответ 14
Чтобы установить изображение на вашем изображении, используйте нижнюю строку кода,
self.imgObj.image=[UIImage imageNamed:@"yourImage.png"];