簡體   English   中英

如何以編程方式更改 UIImageView 中顯示的圖像?

[英]How can I change the image displayed in a UIImageView programmatically?

我有一個UIImageViewIBOutlet ,但是當我查看UIImageView文檔時,我看不到任何有關以編程方式更改它的提示。 我是否必須從 UIImageView 獲取UIImage UIImageView

如果你已經有一個 UIImageView 的 IBOutlet,那么你所要做的就是抓取一個圖像並在接收器 (UIImageView) 上調用 setImage。 下面是兩個抓取圖像的示例。 一個來自 Web,另一個添加到 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 Memory 管理不包括在內。

請注意,在將視圖添加到場景之前,NIB 文件不會連接所有 IBOutlets。 如果您要手動連接東西(如果東西在單獨的 NIB 中,您可能會這樣做),請記住這一點。

因此,如果我的測試視圖 controller 有一個由筆尖連接的“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"];

這對我有用

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

確保 ImageView 在 .h 文件中正確聲明並與 IB 元素鏈接。

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

對於可能正在谷歌搜索以嘗試解決他們的問題的人,請記住在您的 header 文件中正確聲明該屬性並在您的實現文件中合成 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]];

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

希望結合所有這些步驟將幫助您解開謎團。

如果您想以編程方式將圖像設置為UIImageView ,那么不要忘記將UIImageView作為視圖添加到主視圖。

並且不要忘記設置ImageView Frame

這是代碼

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

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

[self.view addSubview:myImage];

我的問題是我試圖在另一個線程中更改圖像。 我確實喜歡這樣:

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

致電:

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

如果您使用 UIImageView 的大小設置 UIScrollView contentSize 和/或計算縮放比例,請不要忘記在更改圖像后調用sizeToFit()

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

這個問題已經有很多答案了。 不幸的是,沒有一個對我有用。 因此,為了完整起見,我添加了對我有幫助的內容:

我有多個具有相同名稱的圖像 - 所以我在子文件夾中訂購了它們。 我有我想要顯示的圖像文件的完整路徑。 使用完整路徑imageNamed: (如上述所有解決方案中所使用的)不起作用並且是錯誤的方法。

相反,我現在使用imageWithContentsOfFile:像這樣:

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

不知道有沒有人讀到這么遠?

如果是這樣,並且這個對您有所幫助:請投票。 ;-)

要在 imageView 上設置圖像,請使用以下代碼行,

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

使用 Swift 5 (XCode 10.3) 它只是

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM