आप UIImage View Programmatically कैसे बनाते हैं - स्विफ्ट


107

मैं प्रोग्रामेटिक रूप से UIImage View बनाने की कोशिश कर रहा हूं, मेरे पास एक नया दृश्य है और मैंने यह करने की कोशिश की

let imageName = "yourImage.png"
yourview.backgroundColor = UIColor.colorWithPatternImage(UIImage(named:imageName))

इस वजह से मैं क्या यह होना चाहिए पता नहीं है काम नहीं किया yourview दूसरी पंक्ति में।

प्रश्न: मैं स्टोरीबोर्ड में इसे करने के बजाय स्क्रीन पर एक UIImageView कैसे बना सकता हूं


7
हाथ में अपने प्रश्न के लिए असंबंधित, लेकिन, BTW, अगर यह छवि एक नहीं है जिसे आपको बहुत उपयोग करने की आवश्यकता होगी, तो आप को उपयोग करने की आवश्यकता नहीं होगी UIImage(named:...)। जैसा कि डॉक्स कहते हैं: "यदि आपके पास एक छवि फ़ाइल है जिसे केवल एक बार प्रदर्शित किया जाएगा और यह सुनिश्चित करना चाहते हैं कि यह सिस्टम के कैश में जोड़ा नहीं जाता है, तो आपको इसके बजाय अपनी छवि का उपयोग करना चाहिए UIImage(contentsOfFile:...)। यह आपकी एकल-उपयोग छवि को बाहर रखेगा। सिस्टम इमेज कैश, संभावित रूप से आपके ऐप की मेमोरी उपयोग विशेषताओं में सुधार करता है। " बस एक FYI करें।
रोब

जवाबों:


255

पहले आप UIImageअपनी छवि फ़ाइल UIImageViewसे बनाते हैं, फिर उसी से बनाते हैं :

let imageName = "yourImage.png"
let image = UIImage(named: imageName)
let imageView = UIImageView(image: image!)

अंत में आपको imageViewएक फ्रेम देना होगा और इसे देखने के लिए अपना विचार जोड़ना होगा:

imageView.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
view.addSubview(imageView)

39

पहले UIImageView बनाएं फिर UIImageView में छवि जोड़ें।

    var imageView : UIImageView
    imageView  = UIImageView(frame:CGRectMake(10, 50, 100, 300));
    imageView.image = UIImage(named:"image.jpg")
    self.view.addSubview(imageView)

31

यह उत्तर स्विफ्ट 3 के लिए अद्यतन है।

यह है कि आप कैसे प्रोग्राम छवि को जोड़ सकते हैं जहां आप बाधाओं को नियंत्रित कर सकते हैं।

Class ViewController: UIViewController {

    let someImageView: UIImageView = {
       let theImageView = UIImageView()
       theImageView.image = UIImage(named: "yourImage.png")
       theImageView.translatesAutoresizingMaskIntoConstraints = false //You need to call this property so the image is added to your view
       return theImageView
    }()

    override func viewDidLoad() {
       super.viewDidLoad()

       view.addSubview(someImageView) //This add it the view controller without constraints
       someImageViewConstraints() //This function is outside the viewDidLoad function that controls the constraints
    }

    // do not forget the `.isActive = true` after every constraint
    func someImageViewConstraints() {
        someImageView.widthAnchor.constraint(equalToConstant: 180).isActive = true
        someImageView.heightAnchor.constraint(equalToConstant: 180).isActive = true
        someImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        someImageView.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: 28).isActive = true
    }

}

16

आप एक पंक्ति में ऊपर उपयोग कर सकते हैं।

  let imageView = UIImageView(image: UIImage(named: "yourImage.png")!)

2
आप कर सकते हैं, लेकिन यह बिल्कुल "साफ" स्विफ्ट नहीं है
एलेक ओ

12

स्विफ्ट 3.0 में:

var imageView : UIImageView
    imageView  = UIImageView(frame:CGRect(x:10, y:50, width:100, height:300));
    imageView.image = UIImage(named:"Test.jpeg")
    self.view.addSubview(imageView)

1
आकार और पैमाने?
Martian2049

1
कोड की बहुत सी पंक्तियों के लिए अंडररेटेड। बेहतर हो इसे इस तरह लिखने के लिए होगा: let imageView = UIImageView(named: "Test.jpeg"); self.view.addSubview(imageView)। 2 लाइनें और आप एक चर के बजाय एक स्थिर का उपयोग करते हैं। फिर इसे लगाने के लिए ऑटोकैनस्ट्रिंट का उपयोग करें।
काकूबाई

10

धन्यवाद, MEnnabah, बस अपने कोड को जोड़ने के लिए जहां आप =घोषणा के बयान में हस्ताक्षर याद कर रहे हैं :

let someImageView: UIImageView = {
   let theImageView = UIImageView()
   theImageView.image = UIImage(named: "yourImage.png")
   theImageView.translatesAutoresizingMaskIntoConstraints = false //You need to call this property so the image is added to your view
   return theImageView
}()

बाकी सब कुछ है, स्विफ्ट 3 के लिए बिल्कुल सही।


6

स्विफ्ट 4.2 और एक्सकोड 10.1 में

//Create image view simply like this.
let imgView = UIImageView()
imgView.frame = CGRect(x: 200, y: 200, width: 200, height: 200)
imgView.image = UIImage(named: "yourimagename")//Assign image to ImageView
imgView.imgViewCorners()
view.addSubview(imgView)//Add image to our view

//Add image view properties like this(This is one of the way to add properties).  
extension UIImageView {
    //If you want only round corners
    func imgViewCorners() {
        layer.cornerRadius = 10
        layer.borderWidth = 1.0
        layer.masksToBounds = true
    }
}

यह उत्तर स्विफ्ट 4.2 के लिए काम करता है। नौसिखिए जैसे किसी के लिए, विस्तार कोड की समझ में भ्रम को जोड़ सकता है, भले ही यह अभी भी अच्छा हो।
मिडटाउनगुरु

-2

स्विफ्ट 4:

सबसे पहले अपने UIImageView के लिए एक आउटलेट बनाएं

@IBOutlet var infoImage: UIImageView!

फिर UIImageView में छवि संपत्ति का उपयोग करें

infoImage.image = UIImage(named: "icons8-info-white")

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