আমি কীভাবে কোনও ইউআইআইভিউভিউ প্রোগ্রামে প্রদর্শিত চিত্রটি পরিবর্তন করতে পারি?


134

আমার কাছে একটি IBOutletআছে UIImageView, তবে আমি যখন UIImageViewডকটির দিকে তাকাব, তখন প্রোগ্রামক্রমে এটি পরিবর্তন করার বিষয়ে আমি কোনও ইঙ্গিত দেখতে পাচ্ছি না। আমি কি এটি থেকে একটি UIImageজিনিস আনতে হবে UIImageView?

উত্তর:


185

আপনার যদি ইতিমধ্যে কোনও ইউআইআইমেজভিউতে আইবিআউটলেট থাকে, তবে আপনাকে যা করতে হবে তা হ'ল রিসিভারে (ইউআইআইমেজভিউ) একটি চিত্র গ্রহণ এবং সেট ইমেজ কল করতে হবে। একটি চিত্র দখল করার দুটি উদাহরণ নীচে রয়েছে। ওয়েব থেকে একটি, এবং একটি আপনি এক্সকোডে আপনার সংস্থান ফোল্ডারে যুক্ত করেন।

UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://farm4.static.flickr.com/3092/2915896504_a88b69c9de.jpg"]]];

অথবা

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

একবার আপনার কোনও চিত্র হয়ে গেলে আপনি তারপরে ইউআইআইমেজভিউ সেট করতে পারবেন:

[imageView setImage:image];

উপরের লাইনটি চিত্র ভিউটি আপনার আইবিউটলেট বলে ধরেছে।

এটাই! আপনি অভিনবতা পেতে চাইলে আপনি ছবিটি কোনও ইউআইভিউতে যুক্ত করতে পারেন এবং তারপরে ট্রানজিশন যুক্ত করতে পারেন।

পিএস মেমরি পরিচালনা অন্তর্ভুক্ত নেই।


1
ধন্যবাদ, তবে এটি কাজ করে না :( আমি ইন্টারফেস বিল্ডারে ছবিটি সরিয়ে ফেললাম যাতে ইউআইআইমেজভিউ খালি থাকে then আউটলেটটিতে .আমি আর কিছুর চেষ্টা করতে পারি?
ধন্যবাদ

3
আপনি সম্ভবত আইবিতে ভিউকন্ট্রোলার রেফারেন্সের সাথে আইবিআউটলেটকে সংযুক্ত করেননি। ছবিটি রিসোর্স ফোল্ডারে রয়েছে তা পরীক্ষা করুন।
জর্দান

আমি নিশ্চিত নেরো নিয়মের / এসও-র প্রভাবের বিষয়ে নিশ্চিত নই, তবে আমি জানি এটি আমার সমস্যা সমাধানে আমাকে সহায়তা করেছে। আমি iOS v5.1, xcode 4.3.2 ব্যবহার করছি
জেক

1
চিত্রটি পরিবর্তন করার আগে [ইউআইভিউকন্ট্রোলার ভিউডিডলড] জন্য ডেকে আনা হয়েছে। আমি এটির দ্বারা আটকা পড়েছি। 8)
poGUIst

1
এই সমাধানটিতে যুক্ত করে, আপনি যদি চিত্র সম্পদ ক্যাটালগ ব্যবহার করে থাকেন তবে কেবল আপনার চিত্রের সেটটির নাম উল্লেখ করুন যেমন ইউআইআইমেজ * চিত্র = [ইউআইআইমেজ চিত্র নামকরণ: @ "আমার আইকন"]; ইউআইআইমেজ এর পরিবর্তে * চিত্র = [ইউআইআইমেজ ইমেজ নামকরণ: @ "মাইকন.পিএনজি"];
কিথ ওওয়াইস

37

দ্রষ্টব্য যে দৃশ্যে দৃশ্যের যোগ না হওয়া অবধি NIB ফাইল সমস্ত আইবিআউটলেটগুলি ওয়্যার আপ করে না। যদি আপনি ম্যানুয়ালি জিনিসগুলি তারের করে রাখেন (যা জিনিসগুলি পৃথক এনআইবিতে থাকে তবে আপনি যা করতে পারেন) এটি মনে রাখা গুরুত্বপূর্ণ।

সুতরাং যদি আমার পরীক্ষার দৃশ্যের নিয়ন্ত্রকের কোনও নিব দ্বারা ওয়্যার্ড করা "চিত্রকল্প" থাকে তবে এটি সম্ভবত কাজ করবে না:

  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 ফাইলে সঠিকভাবে ঘোষিত হয়েছে এবং আইবি উপাদানটির সাথে যুক্ত রয়েছে।



16

লোকেরা তাদের সমস্যা সমাধানের চেষ্টা করার জন্য এটি গুগল করছে, আপনার শিরোনাম ফাইলটিতে সম্পত্তিটি সঠিকভাবে ঘোষণা করা এবং আপনার বাস্তবায়নের ফাইলে ইউআইআইমেজভিউ সংশ্লেষিত করা মনে রাখবেন ... প্রোগ্রামটিকে ছাড়াই চিত্রটি সেট করা শক্ত হবে'll গেটর এবং সেটার পদ্ধতি।

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

ধন্যবাদ! সাধারণভাবে এক্সকোড এবং আইফোনগুলিতে নতুন হওয়ার কারণে আমি ইমেজটোডিসপ্লে করার আগে আপনার কন্ট্রোলারটি মিস করছি।
ওপি

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

জর্ডানের পরামর্শ অনুসরণ করে (যা আসলে কাজ করা উচিত), ইউআইআইমেজভিউটি দৃশ্যমান হওয়ার জন্য সেট করার চেষ্টা করুন:

 [imageView setHidden: NO];

এবং এছাড়াও - এটি প্রধান ইউআইভিউয়ের সাথে সংযুক্ত করতে ভুলবেন না:

[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 হিসাবে যুক্ত করতে ভুলবেন না ।

এবং ইমেজভিউ ফ্রেম সেট করতে ভুলে যান না ।

এখানে কোড

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

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

[self.view addSubview:myImage];

7

sizeToFit()আপনি যদি চিত্রটি পরিবর্তন করেন তবে কল করতে ভুলবেন না তবে আপনি যদি ইউআইস্ক্রোলভিউ কনটেন্টসাইজ এবং / অথবা গণনা জুম স্কেল সেট করতে UIImageView এর আকার ব্যবহার করেন

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

ইউআইভিউ'র পটভূমি বা ইউআইআইমেজভিউয়ের চিত্রের সম্পত্তি দ্বারা চিত্রটি উপস্থাপন করার জন্য এটি কি একই?
ভোরোম্যাক্স

2

এই প্রশ্নের ইতিমধ্যে অনেক উত্তর ছিল। দুর্ভাগ্যক্রমে কেউই আমার পক্ষে কাজ করেনি। সুতরাং সম্পূর্ণতার জন্য আমি যা যুক্ত করেছিলাম তা যুক্ত করে:

আমার একই নামের একাধিক চিত্র ছিল - তাই আমি সেগুলি সাব ফোল্ডারে অর্ডার করেছি। এবং আমি যে চিত্র ফাইলটি দেখাতে চেয়েছিলাম তার পুরো পথ ছিল had একটি পূর্ণ পথ সহ imageNamed:(উপরে সমস্ত সমাধান হিসাবে ব্যবহৃত) কাজ করে নি এবং এটি ভুল পদ্ধতি ছিল।

পরিবর্তে আমি এখন এর imageWithContentsOfFile:মতো ব্যবহার করি :

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

জানেন না, কেউ যদি এতদূর পড়ে থাকেন?

যদি তাই হয় এবং এটি আপনাকে সহায়তা করে: দয়া করে ভোট দিন। ;-)


1

সুইফট 5 (এক্সকোড 10.3) এর সাথে কাজ করা ঠিক

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

0

আপনার চিত্রটিতে চিত্র সেট করতে ভিউ কোডের নীচে ব্যবহার করুন,

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

আপনার প্রকল্পে চিত্রটি অনুলিপি করুন এবং তারপরে উপরের কোডটি ব্যবহার করুন
বৈভব শিলদার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.