프로그래밍 방식으로 UIImageView에 표시되는 이미지를 변경하려면 어떻게해야합니까?


134

나는 IBOutlet~UIImageView 하지만, 내가 볼 때 UIImageView문서, 내가 프로그래밍 방식 변경에 대한 어떤 힌트를 볼 수 없습니다. 그 UIImage객체 를 가져와야 UIImageView합니까?

답변:


185

UIImageView에 대한 IBOutlet이 이미 있으면 이미지를 잡고 수신자 (UIImageView)에서 setImage를 호출하기 만하면됩니다. 이미지를 잡는 두 가지 예는 다음과 같습니다. 하나는 웹에서, 하나는 Xcode의 Resources 폴더에 추가합니다.

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 메모리 관리는 포함되어 있지 않습니다.


1
감사합니다,하지만 작동하지 않습니다 :( 인터페이스 빌더에서 이미지를 제거 했으므로 UIImageView가 비어 있습니다. 그런 다음 viewDidLoad 메소드에 구현했지만 아무 일도 일어나지 않습니다. 이미지 이름이 100 % 정확합니다. 또한 setImage로 할당했습니다. 다른 방법으로 시도해 볼 수 있습니까?
감사합니다.

3
IBOutlet을 IB의 ViewController 참조에 연결하지 않았을 수 있습니다. 이미지가 Resources 폴더에 있는지 확인하십시오.
Jordan

나는 네크로 규칙 / 영향에 대해 확신하지 못하지만 이것이 내 문제를 해결하는 데 도움이되었다는 것을 알고 있습니다. 저는 iOS v5.1, xcode 4.3.2를 사용하고 있습니다.
Jake

1
이미지를 변경하기 전에 [UIViewController viewDidLoad]가 호출되는지 확인하십시오. 나는 그것에 갇혀있다. 8)
poGUIst

1
이 솔루션에 추가하면 이미지 자산 카탈로그를 사용하는 경우 이미지 세트의 이름을 지정하십시오 (예 : UIImage * image = [UIImage imageNamed : @ "My Icon"]; UIImage 대신 * image = [UIImage imageNamed : @ "myicon.png"];
Keith OYS

37

NIB 파일은 뷰가 장면에 추가 될 때까지 모든 IBOutlet을 연결하지 않습니다. 수동으로 작업을 수행하는 경우 (사물이 별도의 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"];

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]];

감사! 일반적으로 xcode 및 iphone을 처음 사용하기 때문에 imageToDisplay 전에 YOURCONTROLLER가 누락되었습니다.
Opy

15

스위프트의 예 :

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

Jordan의 조언 (실제로 작동해야 함)에 따라 UIImageView가 표시되도록 설정하십시오.

 [imageView setHidden: NO];

또한 기본 UIView에 첨부하는 것을 잊지 마십시오.

[mainView addSubview: imageView];

그리고 정면으로 가져 :

[mainView bringSubviewToFront: imageView];

이 모든 단계를 결합하면 수수께끼를 풀 수 있습니다.


8

내 문제는 다른 스레드에서 이미지를 변경하려고 시도했다는 것입니다. 나는 이것을 좋아했다 :

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

전화 :

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

2
그래,이 비트 나 ... 다시 ... 또한 사용할 수dispatch_async(dispatch_get_main_queue(), ^{backgroundImage.image = [UIImage imageNamed:@"img.png"];})
Dex

7

UIImageView프로그래밍 방식으로 이미지를 설정 하려면 기본보기에 SubView 로 추가 UIImageView 하는 것을 잊지 마십시오 .

또한 ImageView Frame 설정을 잊어 버리지 않았습니다 .

여기 코드가 있습니다

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

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

[self.view addSubview:myImage];

7

sizeToFit()UIImageView의 크기를 사용하여 UIScrollView contentSize를 설정하거나 줌 스케일을 계산하는 경우 이미지를 변경 한 후 호출하는 것을 잊지 마십시오.

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


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

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

UIView의 배경 또는 UIImageView의 이미지 속성으로 이미지를 표시하는 것과 동일합니까?
voromax

2

이 질문에는 이미 많은 답변이있었습니다. 불행히도 아무도 나를 위해 일하지 않았다. 그래서 completenes를 위해 나는 나를 도왔던 것을 추가했습니다.

이름이 같은 이미지가 여러 개있어서 하위 폴더에 주문했습니다. 그리고 내가 보여주고 싶은 이미지 파일의 전체 경로를 가졌습니다. 전체 경로 imageNamed:(위의 모든 솔루션에서 사용됨)가 작동하지 않았으며 잘못된 방법이었습니다.

대신 나는 지금 imageWithContentsOfFile:이렇게 사용 한다 :

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

모르는 사람이 있다면

그렇다면이 방법이 도움이되었습니다. 투표하십시오. ;-)


1

Swift 5 (XCode 10.3)로 작업하는 것은 단지

yourImageView.image = UIImage(named: "nameOfTheImage")

0

imageView에서 이미지를 설정하려면 아래 코드 줄을 사용하십시오.

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

프로젝트에 이미지를 복사 한 다음 위의 코드를 사용하십시오
Vaibhav Shiledar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.