खोज…


एक UIImageView बनाएं

UIImageView प्रोग्रामेटिक रूप से बनाने के लिए, आपको केवल UIImageView का एक उदाहरण बनाना होगा:

//Swift
let imageView = UIImageView()

//Objective-C
UIImageView *imageView = [[UIImageView alloc] init];

आप आकार और स्थिति सेट कर सकते UIImageView में एक साथ CGRect :

//Swift
imageView.frame = CGRect(x: 0, y: 0, width: 200, height: 200)

//Objective-C
imageView.frame = CGRectMake(0,0,200,200);

या आप आरंभीकरण के दौरान आकार सेट कर सकते हैं:

//Swift
UIImageView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))

//Objective-C
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,200,200);

//Alternative way of defining frame for UIImageView
UIImageView *imageView = [[UIImageView alloc] init];
CGRect imageViewFrame = imageView.frame;
imageViewFrame.size.width = 200;
imageViewFrame.size.height = 200;
imageViewFrame.origin.x = 0;
imageViewFrame.origin.y = 0;
imageView.frame = imageViewFrame;

नोट: आपको UIImageView का उपयोग करने के लिए UIKit आयात करना होगा।

UIImageView में एक छवि सौंपना

आप प्रारंभ के दौरान या बाद में image संपत्ति का उपयोग करके UIImageView एक छवि प्रदान कर सकते हैं:

//Swift
UIImageView(image: UIImage(named: "image1"))

UIImageView(image: UIImage(named: "image1"), highlightedImage: UIImage(named: "image2"))

imageView.image = UIImage(named: "image1") 

//Objective-C
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1"];

[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1"] highlightedImage:[UIImage imageNamed:@"image2"]];

imageView.image = [UIImage imageNamed:@"image1"];

एक UIImageView एनिमेटेड

आप UIImageView के एनिमेशन का उपयोग करके अनुक्रम में उस पर जल्दी से चित्र प्रदर्शित करके एक UIImageView को एनिमेट कर सकते हैं:

imageView.animationImages = [UIImage(named: "image1")!,
                             UIImage(named: "image2")!,
                             UIImage(named: "image3")!,
                             UIImage(named: "image4")!,
                             UIImage(named: "image5")!,
                             UIImage(named: "image6")!,
                             UIImage(named: "image7")!,
                             UIImage(named: "image8")!] 
imageView.animationDuration = 0.3
imageView.animationRepeatCount = 1

animationImages संपत्ति एक है Array के UIImages कि जब एनीमेशन शुरू हो रहा है ऊपर से नीचे तक के माध्यम से चलाया जाता है।

animationDuration प्रॉपर्टी एक Double कहावत है कि एनीमेशन कितने सेकंड के लिए चलेगा।

animationRepeatCount प्रॉपर्टी एक Int जो कहती है कि एनीमेशन कितनी बार चलेगा।

एनीमेशन को शुरू करने और रोकने के लिए, आप ऐसा करने के लिए उपयुक्त तरीके कह सकते हैं:

imageView.startAnimating()
imageView.stopAnimating()

वहाँ विधि isAnimating() जो एक Boolean मान लौटाता है जो दर्शाता है कि एनीमेशन एक पल में चल रहा है या नहीं।

कृपया ध्यान दें कि यह एनिमेशन बनाने का बहुत कारगर तरीका नहीं है: यह काफी धीमा और संसाधन-खपत है। बेहतर परिणाम के लिए Layers या Sprites का उपयोग करने पर विचार करें

एक सर्कल में एक छवि बनाना या गोल करना

इस उदाहरण से पता चलता है कि एक UIView या UIImageView कैसे बनाया जाता है, इस तरह कुछ त्रिज्या के साथ गोल:

उदाहरण स्क्रीनशॉट

उद्देश्य सी

someImageView.layer.cornerRadius = CGRectGetHeight(someImageView.frame) / 2;
someImageView.clipsToBounds = YES;

तीव्र

someImageView.layer.cornerRadius = someImageView.frame.height/2
// this should alleviate the performance hit that adding transparency may cause - see http://stackoverflow.com/a/6254531/189804
// Be sure to check scrolling performance with Instruments if you take this approach.
someImageView.layer.shouldRasterize = true
someImageView.clipsToBounds = true // All parts of the image that are outside its bounds (the frame) are cut out (makes the rounded corners visible)

यह सुझाव दिया है कि यदि आप autolayout का उपयोग करें कि आप डाल someImageView.layer.cornerRadius में कोड viewDidLayoutSubviews । यह छवि के cornerRadius को अपडेट करने की अनुमति देगा यदि छवि आकार बदल जाती है।

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    someImageView.layer.cornerRadius = someImageView.frame.size.width/2
    someImageView.layer.masksToBounds = true
}

UIImage लेबल के साथ नकाबपोश

यह छवि को लेबल के अक्षरों के आकार का बना देता है:

उद्देश्य सी

self.maskImage.layer.mask = self.maskLabel.layer;
self.maskImage.layer.masksToBounds = YES;

स्विफ्ट 3

maskImageView.mask = maskLabel
maskImageView.masksToBounds = true

यहाँ परिणाम है:

परिणाम

एक छवि का रंग बदलें

//Swift
imageView.tintColor = UIColor.redColor()
imageView.image = imageView.image?.imageWithRenderingMode(.AlwaysTemplate)

//Swift 3
imageView.tintColor = UIColor.red
imageView.image = imageView.image?.withRenderingMode(.alwaysTemplate)

//Objective-C
imageView.tintColor = [UIColor redColor];
imageView.image = [imageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]

मोड प्रॉपर्टी एक छवि को कैसे प्रभावित करती है

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

विशेषताएँ निरीक्षक स्क्रीनशॉट

आइए देखें कि विभिन्न मोड कैसे काम करते हैं, यह देखने के लिए दो छवि दृश्यों का उपयोग करें।

इंटरफ़ेस बिल्डर स्क्रीनशॉट

भरने के लिए पैमाना

भरने के लिए पैमाना

छवि ऊंचाई और चौड़ाई UIImageView के आकार से मेल खाते हैं।

पहलू फिट

पहलू फिट

छवि का सबसे लंबा पक्ष (या तो ऊँचाई या चौड़ाई) दृश्य से मेल खाने के लिए फैला हुआ है। यह छवि को यथासंभव बड़ा बनाता है जबकि पूरी छवि दिखाते हुए और ऊँचाई या चौड़ाई को विकृत नहीं करता है। (मैंने UIImageView पृष्ठभूमि को नीले रंग में सेट किया है ताकि इसका आकार स्पष्ट हो।)

पहलू भरें

पहलू भरें

दृश्य से मेल खाने के लिए छवि का सबसे छोटा पक्ष (या तो ऊँचाई या चौड़ाई) फैला हुआ है। "पहलू फिट" की तरह, छवि के अनुपात उनके मूल पहलू अनुपात से विकृत नहीं होते हैं।

पुन: आरेखित करें

पुन: आरेखित करें

Redraw केवल कस्टम दृश्यों के लिए है, जिन्हें अपना स्केलिंग और आकार बदलने की आवश्यकता है। हम कस्टम दृश्य का उपयोग नहीं कर रहे हैं, इसलिए हमें Redraw का उपयोग नहीं करना चाहिए। ध्यान दें कि यहाँ UIImageView हमें केवल स्केल टू फिल के समान परिणाम देता है, लेकिन यह पर्दे के पीछे अधिक काम कर रहा है।

Redraw के बारे में, Apple प्रलेखन कहता है:

सामग्री मोड आपके दृश्य की सामग्री को पुनर्चक्रित करने के लिए अच्छे हैं, लेकिन आप सामग्री मोड को UIViewContentModeRedraw मूल्य पर भी सेट कर सकते हैं, जब आप विशेष रूप से अपने कस्टम विचारों को स्केलिंग और संचालन के आकार के दौरान स्वयं को फिर से बनाना चाहते हैं। इस मान के लिए अपने दृश्य की सामग्री मोड सेट करने से सिस्टम को आपके दृश्य की drawRect: को कॉल करने के लिए drawRect: ज्यामिति परिवर्तनों के जवाब में विधि। सामान्य तौर पर, जब भी संभव हो, आपको इस मूल्य का उपयोग करने से बचना चाहिए, और आपको निश्चित रूप से मानक प्रणाली के विचारों के साथ इसका उपयोग नहीं करना चाहिए।

केंद्र

केंद्र

छवि दृश्य में केंद्रित है, लेकिन छवि की लंबाई और चौड़ाई में खिंचाव नहीं है।

ऊपर

ऊपर

छवि का शीर्ष किनारा दृश्य के शीर्ष पर क्षैतिज रूप से केंद्रित होता है, और छवि की लंबाई और चौड़ाई को बढ़ाया नहीं जाता है।

तल

तल

छवि के निचले किनारे को दृश्य के तल पर क्षैतिज रूप से केंद्रित किया गया है, और छवि की लंबाई और चौड़ाई को बढ़ाया नहीं गया है।

बाएं

बाएं

छवि का बायाँ किनारा दृश्य के बाईं ओर लंबवत केंद्रित है, और छवि की लंबाई और चौड़ाई खिंची नहीं है।

सही

सही

छवि के दाहिने किनारे को दृश्य के दाईं ओर लंबवत केंद्रित किया गया है, और छवि की लंबाई और चौड़ाई को बढ़ाया नहीं गया है।

बाएं से बाएं

बाएं से बाएं

छवि के ऊपरी बाएं कोने को दृश्य के ऊपरी बाएं कोने में रखा गया है। छवि की लंबाई और चौड़ाई को बढ़ाया नहीं गया है।

दायां शीर्ष

दायां शीर्ष

छवि के ऊपरी दाएं कोने को दृश्य के शीर्ष दाएं कोने पर रखा गया है। छवि की लंबाई और चौड़ाई को बढ़ाया नहीं गया है।

नीचे बाएँ

नीचे बाएँ

छवि के निचले बाएं कोने को दृश्य के निचले बाएं कोने पर रखा गया है। छवि की लंबाई और चौड़ाई को बढ़ाया नहीं गया है।

नीचे दाएं

नीचे दाएं

छवि के निचले दाएं कोने को दृश्य के निचले दाएं कोने पर रखा गया है। छवि की लंबाई और चौड़ाई को बढ़ाया नहीं गया है।

टिप्पणियाँ

  • यह उदाहरण मूल रूप से यहाँ से आता है

  • यदि सामग्री (हमारे मामले में छवि) दृश्य के समान आकार (हमारे मामले में UIImageView ) है, तो सामग्री मोड को बदलने से कोई ध्यान देने योग्य अंतर नहीं होगा।

  • UIImageView अलावा अन्य विचारों के लिए सामग्री मोड के बारे में चर्चा के लिए यह और यह प्रश्न देखें।

  • स्विफ्ट में, सामग्री मोड को प्रोग्रामेटिक रूप से सेट करने के लिए सेट करने के लिए आप निम्न कार्य करें:

      imageView.contentMode = UIViewContentMode.scaleToFill
      imageView.contentMode = UIViewContentMode.scaleAspectFit
      imageView.contentMode = UIViewContentMode.scaleAspectFill
      imageView.contentMode = UIViewContentMode.redraw
      imageView.contentMode = UIViewContentMode.center
      imageView.contentMode = UIViewContentMode.top
      imageView.contentMode = UIViewContentMode.bottom
      imageView.contentMode = UIViewContentMode.left
      imageView.contentMode = UIViewContentMode.right
      imageView.contentMode = UIViewContentMode.topLeft
      imageView.contentMode = UIViewContentMode.topRight
      imageView.contentMode = UIViewContentMode.bottomLeft
      imageView.contentMode = UIViewContentMode.bottomRight
    


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow