खोज…
एक 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