কোডে কোনও ইউআইবাটনটির জন্য একটি চিত্র সেট করা


196

আপনি কোডটিতে কোনও ইউআইবাটনটির জন্য চিত্রটি কীভাবে সেট করবেন?

আমার আছে এটা:

UIButton *btnTwo = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
btnTwo.frame = CGRectMake(40, 140, 240, 30);
[btnTwo setTitle:@"vc2:v1" forState:UIControlStateNormal];
[btnTwo addTarget:self action:@selector(goToOne) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btnTwo];

তবে এর জন্য চিত্রটি কী সেট করবে তা দেখুন না।

উত্তর:


398

উদ্দেশ্য গ

UIImage *btnImage = [UIImage imageNamed:@"image.png"];
[btnTwo setImage:btnImage forState:UIControlStateNormal];

সুইফট 5.1

let btnImage = UIImage(named: "image")
btnTwo.setImage(btnImage , for: .normal)

1
সাইডেনোট হিসাবে: এটি চিত্রটি প্রদর্শন করবে তবে বোতামটির শিরোনামের পাঠ্যটি গোপন থাকবে।
লিবিয়াথন

এই কোডটি পুরোপুরি কাজ করছে তবে আমি পার্সিংয়ের সাথে চিত্র পাচ্ছি যাতে এই কোডটি ইউআইআইমেজ ক্ষেত্রে আমার জন্য যেমন কাজ করা হয় আমি কীভাবে এটি করতে পারি: - largePick.image = aNewsInfo.smallImageData; আমি ইউআইবাটন দিয়ে এটি কীভাবে করতে পারি ... আপনি কি আমাকে সহায়তা করতে পারেন ...
ব্যবহারকারী 755278

1
@ স্লকোট, ডকুমেন্টেশনটি কোথায় বলে ? setImageহ্রাস করা হয়েছে এমন কোথাও এর প্রস্তাব আমি দেখতে পাচ্ছি না । (এটি আমার কাছে মনে হয় আপনি বিভ্রান্ত UIButton.setImageকরছেন UITableViewCell.image, যা আপনার বিবরণ অনুসারে একটি সম্পত্তি হ'ল ))
र्क ওল

12
মনোযোগ দিন: আপনি যদি ইউআইবাটন টাইপ কাস্টম ব্যতীত অন্য কিছু ব্যবহার করেন তবে চিত্রটি
আইওএস 7

2
সুইফট 3 এর জন্য: বিটিএনটিও.সেটেমেজ (বিটিএনআইমেজ, এর জন্য: ইউআইসিএন্ট্রোলস্টেট.অনরমাল)
মন্টোয়া

57

মাইকের সমাধানটি কেবল চিত্রটি দেখায় তবে বোতামে থাকা কোনও শিরোনাম সেট দৃশ্যমান হবে না, কারণ আপনি শিরোনাম বা চিত্রটি সেট করতে পারেন।

আপনি যদি উভয় সেট করতে চান (আপনার চিত্র এবং শিরোনাম) নিম্নলিখিত কোডটি ব্যবহার করুন:

btnImage = [UIImage imageNamed:@"image.png"];
[btnTwo setBackgroundImage:btnImage forState:UIControlStateNormal];
[btnTwo setTitle:@"Title" forState:UIControlStateNormal];

2
সেট ইমেজ এবং সেটব্যাকগ্রাউন্ড ইমেজের মধ্যে পার্থক্য কী ?
onmyway133

3
সেটব্যাকগ্রাউন্ড ইমেজটি আপনার শিরোনাম পাঠ্যের উপরের বোতামটির প্রস্থের উপরে চিত্রটি প্রসারিত করবে যখন সেট ইমেজটি চিত্রটিকে প্রসারিত না করে শিরোনামের পাঠ্যকে উপেক্ষা করে একটি চিত্র তৈরি করবে make
আর্নেস্ট

21

এটি আমার পক্ষে কাজ করার আগে আমাকে চিত্রের ফ্রেমের আকারের উপর ভিত্তি করে স্পষ্টভাবে বোতামের ফ্রেমটির আকার পরিবর্তন করতে হয়েছিল।

UIImage *listImage = [UIImage imageNamed:@"list_icon.png"];
UIButton *listButton = [UIButton buttonWithType:UIButtonTypeCustom];

// get the image size and apply it to the button frame
CGRect listButtonFrame = listButton.frame;
listButtonFrame.size = listImage.size;
listButton.frame = listButtonFrame;

[listButton setImage:listImage forState:UIControlStateNormal];
[listButton addTarget:self.navigationController.parentViewController 
               action:@selector(revealToggle:) 
     forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *jobsButton = 
  [[UIBarButtonItem alloc] initWithCustomView:listButton];

self.navigationItem.leftBarButtonItem = jobsButton;

@ জরাসমসন কেবল যুক্ত করতে চেয়েছিলেন যে ফ্রেমের সাথে ফিডিংয়ের 3 টি লাইনও এতে লেখা যেতে পারে[listButton sizeToFit]
বি কে 138

10

সুইফ্ট ব্যবহারকারী ক্ষেত্রে

// case of normal image
let image1 = UIImage(named: "your_image_file_name_without_extension")!
button1.setImage(image1, forState: UIControlState.Normal) 

// in case you don't want image to change when "clicked", you can leave code below
// case of when button is clicked
let image2 = UIImage(named: "image_clicked")!
button1.setImage(image2, forState: UIControlState.Highlight) 

9

আপনি এটি এইভাবে করতে পারেন

[btnTwo setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];

9
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0, 0, 150, 44);
[btn setBackgroundImage:[UIImage imageNamed:@"buttonimage.png"] 
               forState:UIControlStateNormal];
[btn addTarget:self 
     action:@selector(btnSendComment_pressed:) 
     forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];

8

আপনি যে কোনও একটিতে চিত্রটি রাখতে পারেন:

UIButton *btnTwo = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
btnTwo.frame = CGRectMake(40, 140, 240, 30);
[btnTwo setTitle:@"vc2:v1" forState:UIControlStateNormal];
[btnTwo addTarget:self 
           action:@selector(goToOne) 
 forControlEvents:UIControlEventTouchUpInside];


[btnTwo setImage:[UIImage imageNamed:@"name.png"] forState:UIControlStateNormal];

//OR setting as background image

[btnTwo setBackgroundImage:[UIImage imageNamed:@"name.png"] 
                  forState:UIControlStateNormal];

[self.view addSubview:btnTwo];

কোডটির এই অংশটি আমাকে বিভ্রান্ত করেছে। <কোড> বিটিএনআইমেজ = [ইউআইআইমেজ ইমেজ নামকরণ: @ "চিত্র.png"]; </code> বিটিএন ইমেজ কি? এটি মূল কোডে ছিল না। এটা কি নতুন বোতাম?
মাইক মার্টিন

আপনি অন্য কোনও চিত্রের আইটেমটি এর পরিবর্তে সরাসরি বাটনটির চিত্রটি সেট করতে পারেন: [বিটিএনটিও সেট ইমেজ: [ইউআইআইমেজ ইমেজ নামকরণ: @ "চিত্র.png"]];
অজয় শর্মা

আপনার বাটনউইথটাইপ থাকতে হবে: UIButtonTypeRoundedRect to UIButtonTypeCustom অন্যান্য বুদ্ধি আপনার চিত্র অনুসারে প্রদর্শিত হবে না।
প্রবীণ-কে

2

আমি একজন যোগ করার জন্য একটি সমাধান খুঁজছেন ছিল UIImageআমার কাছে UIButton। সমস্যাটি ছিল এটি কেবল চিত্রের চেয়ে প্রয়োজনের চেয়ে বড় দেখায়। স্রেফ আমাকে এটিতে সহায়তা করেছেন:

_imageViewBackground = [[UIImageView alloc] initWithFrame:rectImageView];
_imageViewBackground.image = [UIImage imageNamed:@"gradientBackgroundPlain"];
[self addSubview:_imageViewBackground];
[self insertSubview:_imageViewBackground belowSubview:self.label];
_imageViewBackground.hidden = YES;

প্রতিটি সময় আমি আমার প্রদর্শন করাতে চান UIImageViewআমি শুধু Var সেট hiddenকরতে YESবা NO। অন্যান্য সমাধান হতে পারে তবে আমি এই স্টাফ নিয়ে বহুবার বিভ্রান্ত হয়ে পড়েছিলাম এবং এটি সমাধান করেছে এবং অভ্যন্তরীণ জিনিসগুলি UIButtonপটভূমিতে করানোর দরকার নেই।


2

কোড থেকে বোতামটি এত ফ্রেম করে চিন্তা করবেন না, আপনি স্টোরিবোর্ডে এটি করতে পারেন। এটি আমার পক্ষে কাজ করেছে, এক লাইন ... আরও সহজ।

[self.button setBackgroundImage:[UIImage imageNamed: @"yourPic.png"] forState:UIControlStateNormal];

2
-(void)buttonTouched:(id)sender
{
    UIButton *btn = (UIButton *)sender;

    if( [[btn imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"icon-Locked.png"]])
    {
        [btn setImage:[UIImage imageNamed:@"icon-Unlocked.png"] forState:UIControlStateNormal];
        // other statements....
    }
    else
    {
        [btn setImage:[UIImage imageNamed:@"icon-Locked.png"] forState:UIControlStateNormal];
        // other statements....
    }
}

2

সুইফট 3 সংস্করণ (বাট_মিগ অবশ্যই এক্সকোডে Assets.xcassets বা Images.xcassets ফোল্ডারে একটি চিত্র সেট হতে হবে ):

btnTwo.setBackgroundImage(UIImage(named: "butt_img"), for: .normal)
btnTwo.setTitle("My title", for: .normal)

যাইহোক, আপনি যদি চান বাটনের আকারটি পূরণ করার জন্য চিত্রটি ছোট করে দেওয়া হয়, আপনি UIImageViewএটির উপরে একটি যুক্ত করে এটি আপনার চিত্রটি বরাদ্দ করতে পারেন :

let img = UIImageView()
img.frame = btnTwo.frame
img.contentMode = .scaleAspectFill
img.clipsToBounds = true
img.image = UIImage(named: "butt_img")
btnTwo.addSubview(img)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.