मैं UIImageView प्रोग्राम में प्रदर्शित छवि को प्रोग्रामिक रूप से कैसे बदल सकता हूं?


134

मेरे पास एक IBOutletहै UIImageView, लेकिन जब मैं UIImageViewडॉक्टर को देखता हूं, तो मैं प्रोग्राम बदलने के बारे में कोई संकेत नहीं देख सकता। क्या मुझे उससे कोई UIImageवस्तु प्राप्त करनी है UIImageView?

जवाबों:


185

यदि आपके पास पहले से ही एक UIImageView के लिए एक IBOutlet है, तो आपको बस इतना करना होगा कि एक छवि को कॉल करें और रिसीवर (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];

छवि दृश्य के ऊपर की रेखा आपका IBOutlet है।

बस! यदि आप फैंसी प्राप्त करना चाहते हैं, तो आप छवि को एक UIView में जोड़ सकते हैं और फिर संक्रमण जोड़ सकते हैं।

PS मेमोरी प्रबंधन शामिल नहीं है।


1
धन्यवाद, लेकिन यह काम नहीं करता है :( मैंने इंटरफ़ेस बिल्डर में छवि को हटा दिया है इसलिए UIImageView खाली है। फिर मैंने इसे viewDidLoad विधि में लागू किया। लेकिन कुछ भी नहीं होता है। छवि का नाम 100% सही निर्दिष्ट है। मैंने इसे सेटैमेज के साथ भी सौंपा है। आउटलेट के लिए। कुछ और मैं कोशिश कर सकता हूँ?
धन्यवाद

3
आपने शायद आईबी में आईबूटलेट को व्यूकंट्रोलर संदर्भ से नहीं जोड़ा है। संसाधन फ़ोल्डर में छवि की जाँच करें।
जॉर्डन

मुझे यकीन नहीं है कि एसओ पर नेक्रो नियम / प्रभाव है, लेकिन मुझे पता है कि इससे मुझे अपनी समस्या हल करने में मदद मिली। मैं iOS v5.1, xcode 4.3.2
Jake

1
छवि बदलने से पहले [UIViewController viewDidLoad] की जाँच की जाती है। मैं इससे फंस गया हूं। 8)
13

1
इस समाधान पर जोड़ना, यदि आप इमेज एसेट कैटलॉग का उपयोग कर रहे हैं, तो बस अपने इमेज सेट का नाम निर्दिष्ट करें जैसे UIImage * image = [UIImage imageNamed: @ "My Icon"]; UIImage * छवि के बजाय = [UIImage imageNamed: @ "myicon.png"];
कीथ ओईएस

37

ध्यान दें कि जब तक दृश्य में जोड़ा नहीं गया है, तब तक एनआईबी फ़ाइल सभी IBOutlets को तार नहीं देती है। यदि आप चीजों को मैन्युअल रूप से वायर कर रहे हैं (जो कि यदि आप अलग-अलग एनआईबी में हैं, तो आप कर रहे हैं) यह ध्यान रखना जरूरी है।

इसलिए अगर मेरे टेस्ट व्यू कंट्रोलर के पास एक "इमेज व्यू" है जो वायर्ड है, तो यह संभवत: काम नहीं करेगा:

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

सुनिश्चित करें कि छवि .h फ़ाइल में ठीक से घोषित किया गया है और IB तत्व से जुड़ा हुआ है।



16

उन लोगों के उद्देश्य के लिए जो अपनी समस्या को हल करने का प्रयास करने के लिए इसे गुगली कर सकते हैं, अपनी हेडर फ़ाइल में संपत्ति को ठीक से घोषित करने और अपनी कार्यान्वयन फ़ाइल में UIImageView को संश्लेषित करने के लिए याद रखें ... छवि को प्रोग्राम किए बिना सेट करना कठिन होगा गेट्टर और सेटर विधियाँ।

#import <UIKit/UIKit.h>

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

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

@end

और फिर अपने। में:

@implementation YOURCONTROLLERNAME

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

वहां से आपको अपनी छवि को सेट करने के लिए निम्नलिखित जैसे कुछ का उपयोग करके ठीक होना चाहिए।

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

धन्यवाद! सामान्य रूप से xcode और iphones के नए होने के कारण मैं imageToDisplay से पहले YourCONTROLLER को याद कर रहा था।
ओपी

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

जॉर्डन की सलाह के बाद (जो वास्तव में काम करना चाहिए), 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"];})
डेक्स

7

आप के लिए सेट छवि चाहते हैं UIImageViewप्रोग्राम के रूप में तो न जोड़ने के लिए भूल जाओ UIImageView के रूप में subview मुख्य देखें।

और ImageView फ़्रेम सेट करना भी न भूलें

यहाँ कोड है

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

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

[self.view addSubview:myImage];



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

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

क्या यह UIView की पृष्ठभूमि या UIImageView की छवि संपत्ति द्वारा छवि प्रस्तुत करने के लिए समान है?
voromax

2

इस सवाल के पहले से ही बहुत सारे जवाब थे। दुर्भाग्य से मेरे लिए कोई काम नहीं किया। इसलिए पूर्णताओं की खातिर मैं इसमें मदद करता हूं:

मेरे पास एक ही नाम के साथ कई छवियां थीं - इसलिए मैंने उन्हें सब फ़ोल्डर्स में ऑर्डर किया। और मेरे पास उस छवि फ़ाइल का पूर्ण पथ था जिसे मैं दिखाना चाहता था। एक पूर्ण पथ के साथ imageNamed:(जैसा कि ऊपर सभी समाधानों में उपयोग किया जाता है) काम नहीं करता था और गलत तरीका था।

इसके बजाय मैं अब का उपयोग imageWithContentsOfFile:करें:

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

नहीं पता, अगर कोई भी उस तक पढ़ता है?

यदि ऐसा है और इसने आपकी मदद की: कृपया मतदान करें। ;-)


1

स्विफ्ट 5 (XCode 10.3) के साथ काम करना अभी-अभी है

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

0

अपने चित्र पर छवि सेट करने के लिए कोड की रेखा के नीचे उपयोग करें,

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

अपनी परियोजना में छवि की प्रतिलिपि बनाएँ और फिर उपरोक्त कोड का उपयोग करें
वैभव शेडदार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.