ฉันมีIBOutlet
ถึง a UIImageView
แต่เมื่อฉันดูUIImageView
เอกสารฉันไม่เห็นคำแนะนำใด ๆ เกี่ยวกับการเปลี่ยนแปลงทางโปรแกรม ฉันต้องดึงUIImage
วัตถุจากสิ่งนั้นUIImageView
หรือไม่?
ฉันมีIBOutlet
ถึง a UIImageView
แต่เมื่อฉันดูUIImageView
เอกสารฉันไม่เห็นคำแนะนำใด ๆ เกี่ยวกับการเปลี่ยนแปลงทางโปรแกรม ฉันต้องดึงUIImage
วัตถุจากสิ่งนั้นUIImageView
หรือไม่?
คำตอบ:
หากคุณมี IBOutlet สำหรับ UIImageView อยู่แล้วสิ่งที่คุณต้องทำก็คือคว้าภาพและเรียกใช้ setImage บนเครื่องรับ (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];
บรรทัดด้านบนถือว่า imageView คือ IBOutlet ของคุณ
แค่นั้นแหละ! หากคุณต้องการจินตนาการคุณสามารถเพิ่มภาพลงใน UIView แล้วเพิ่มช่วงการเปลี่ยนภาพ
ไม่รวมการจัดการหน่วยความจำ PS
โปรดทราบว่าไฟล์ NIB จะไม่เชื่อมต่อ IBOutlets ทั้งหมดจนกว่าจะมีการเพิ่มมุมมองลงในฉาก หากคุณเดินสายสิ่งต่างๆด้วยตนเอง (ซึ่งคุณอาจทำหากสิ่งต่างๆอยู่ใน 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"];
สิ่งนี้ได้ผลสำหรับฉัน
[ImageViewName setImage:[UIImage imageNamed: @"ImageName.png"]];
ตรวจสอบให้แน่ใจว่า ImageView ได้รับการประกาศอย่างถูกต้องในไฟล์. h และเชื่อมโยงกับองค์ประกอบ IB
imageView.image = [UIImage imageNamed:@"myImage.png"];
สำหรับจุดประสงค์ของผู้ที่อาจจะ googling สิ่งนี้เพื่อพยายามแก้ไขปัญหาของพวกเขาอย่าลืมประกาศคุณสมบัติในไฟล์ส่วนหัวของคุณอย่างถูกต้องและสังเคราะห์ 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")!)!)
}
}
ตามคำแนะนำของ Jordan (ซึ่งควรใช้งานได้จริง) ลองตั้งค่า UIImageView ให้มองเห็นได้:
[imageView setHidden: NO];
และอย่าลืมแนบเข้ากับ UIView หลัก:
[mainView addSubview: imageView];
และนำไปด้านหน้า:
[mainView bringSubviewToFront: imageView];
หวังว่าการรวมขั้นตอนทั้งหมดนี้จะช่วยให้คุณไขปริศนาได้
ปัญหาของฉันคือฉันพยายามเปลี่ยนภาพในชุดข้อความอื่น ฉันทำแบบนี้:
- (void)changeImage {
backgroundImage.image = [UIImage imageNamed:@"img.png"];
}
โทรด้วย:
[self performSelectorOnMainThread : @selector(changeImage) withObject:nil waitUntilDone:NO];
dispatch_async(dispatch_get_main_queue(), ^{backgroundImage.image = [UIImage imageNamed:@"img.png"];})
หากคุณต้องการตั้งค่าภาพเป็นแบบทางUIImageView
โปรแกรมอย่าลืมเพิ่มUIImageView
เป็นSubViewในมุมมองหลัก
และยังไม่ลืมที่จะชุดกรอบ ImageView
นี่คือรหัส
UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
myImage.image = [UIImage imageNamed:@"myImage.png"];
[self.view addSubview:myImage];
อย่าลืมโทรsizeToFit()
หลังจากที่คุณเปลี่ยนภาพหากคุณใช้ขนาดของ UIImageView เพื่อตั้งค่า UIScrollView contentSize และ / หรือมาตราส่วนการคำนวณการซูม
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];
ไม่รู้จะมีใครอ่านไปไกลไหม
ถ้าเป็นเช่นนั้นและสิ่งนี้ช่วยคุณได้: โปรดโหวต ;-)
การทำงานกับ Swift 5 (XCode 10.3) มันเป็นเพียง
yourImageView.image = UIImage(named: "nameOfTheImage")
ในการตั้งค่าภาพบน imageView ของคุณให้ใช้บรรทัดด้านล่างของรหัส
self.imgObj.image=[UIImage imageNamed:@"yourImage.png"];