जवाबों:
अब आप अपनी छवि को उसके नाम से संदर्भित कर सकते हैं, जैसे आप किसी भी .png फ़ाइल को।
UIImage(named: "myImage")
वेक्टर समर्थन Xcode में भ्रामक है, क्योंकि जब अधिकांश लोग वैक्टर के बारे में सोचते हैं, तो वे उन छवियों के बारे में सोचते हैं जो ऊपर और नीचे पैमाने पर कर सकते हैं और फिर भी अच्छे दिख सकते हैं। हालाँकि, Xcode 6 और 7 में iOS के लिए पूर्ण वेक्टर समर्थन नहीं है, इसलिए चीजें थोड़ी अलग तरह से काम करती हैं।
वेक्टर प्रणाली वास्तव में सरल है । यह अपने लेता .pdf
छवि, और बनाता है @1x.png
, @2x.png
और @3x.png
पर संपत्ति का निर्माण समय । (आप इसे सत्यापित करने के लिए Assets.car की सामग्री की जांच करने के लिए एक उपकरण का उपयोग कर सकते हैं ।)
उदाहरण के लिए, मान लें कि आप foo.pdf
44x44 वेक्टर संपत्ति हैं। पर निर्माण समय यह निम्न फ़ाइलें उत्पन्न करेगा:
foo@1x.png
44x44 परfoo@2x.png
88x88 परfoo@3x.png
132x132 परयह किसी भी आकार की छवि के लिए समान काम करता है। उदाहरण के लिए, यदि आपके पास bar.pdf
100x100 है, तो आपको मिलेगा:
bar@1x.png
100x100 परbar@2x.png
200x200 परbar@3x.png
300x300 परresizableImageWithCapInsets:
अपने स्लाइस मानों का उपयोग करके और विभाजित करके कोड में स्वयं कर सकते हैं[UIScreen mainScreen].scale
CGFloat scale = [UIScreen mainScreen].scale; UIImage *image = [[UIImage imageNamed:@"my_unsliced_asset"] resizableImageWithCapInsets:UIEdgeInsetsMake(10 * scale, 11 * scale, 12 * scale, 13 * scale)];
यह @Senseful द्वारा उत्कृष्ट उत्तर का पूरक है।
मैं बताऊंगा कि यह कैसे करना है Inkscape क्योंकि यह मुफ़्त और खुला स्रोत है लेकिन अन्य कार्यक्रम समान होने चाहिए।
Inkscape:
टिप्पणियाँ:
यदि आपके पास पहले से ही .svg छवि है जो गलत पृष्ठ आकार है, तो निम्न कार्य करें:
.Svg फ़ाइल को .pdf में बदलने के लिए आप अपने लिए काम करने के लिए ऑनलाइन उपयोगिताओं को भी पा सकते हैं। यहाँ इस जवाब से एक उदाहरण है । इससे आपको .pdf आकार को आसानी से सेट करने की अनुमति का लाभ मिलता है।
उन लोगों के लिए जो अभी भी अपडेट नहीं हुए हैं, Xcode 9 (iOS 11) में बदलाव हुए थे।
कोको टच में नया क्या है (WWDC 2017 सत्र 201) (@ 32: 55) https://developer.apple.com/videos/play/wwdc2017/201/
कुछ शब्दों में, एसेट कैटलॉग में अब नया चेकबॉक्स शामिल है, जिसमें "इंस्पेक्टर वेक्टर डेटा" नाम के इंस्पेक्टर इंस्पेक्टर शामिल हैं। जब जांच की जाती है, तो पीडीएफ डेटा को संकलित बाइनरी में शामिल किया जाएगा, जिससे इसका आकार बढ़ जाएगा। लेकिन यह दोनों दिशाओं में वेक्टर डेटा को स्केल करने और अच्छी छवियां प्रदान करने के लिए iOS के लिए एक मौका देता है। (अपनी कठिनाइयों के साथ)। 11 से नीचे के आईओएस के लिए, ऊपर की ओर जवाब में वर्णित पुराने स्केलिंग तंत्र का उपयोग किया जाता है।
आप अपने प्रोजेक्ट के अंदर सामान्य पीडीएफ फाइलों को वेक्टर इमेज के रूप में उपयोग कर सकते हैं और इस एक्सटेंशन का उपयोग करके किसी भी आकार की छवियां प्रदान कर सकते हैं। यह तरीका बेहतर है क्योंकि iOS आपकी पीडीएफ फाइलों में से .PNG छवियों को उत्पन्न नहीं करेगा, साथ ही आप उन छवियों को भी प्रस्तुत कर सकते हैं जो आप चाहते हैं:
extension UIImage {
static func fromPDF(filename: String, size: CGSize) -> UIImage? {
guard let path = Bundle.main.path(forResource: filename, ofType: "pdf") else { return nil }
let url = URL(fileURLWithPath: path)
guard let document = CGPDFDocument(url as CFURL) else { return nil }
guard let page = document.page(at: 1) else { return nil }
let imageRect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
if #available(iOS 10.0, *) {
let renderer = UIGraphicsImageRenderer(size: size)
let img = renderer.image { ctx in
UIColor.white.withAlphaComponent(0).set()
ctx.fill(imageRect)
ctx.cgContext.translateBy(x: 0, y: size.height)
ctx.cgContext.scaleBy(x: 1.0, y: -1.0)
ctx.cgContext.concatenate(page.getDrawingTransform(.artBox, rect: imageRect, rotate: 0, preserveAspectRatio: true))
ctx.cgContext.drawPDFPage(page);
}
return img
} else {
// Fallback on earlier versions
UIGraphicsBeginImageContextWithOptions(size, false, 2.0)
if let context = UIGraphicsGetCurrentContext() {
context.interpolationQuality = .high
context.setAllowsAntialiasing(true)
context.setShouldAntialias(true)
context.setFillColor(red: 1, green: 1, blue: 1, alpha: 0)
context.fill(imageRect)
context.saveGState()
context.translateBy(x: 0.0, y: size.height)
context.scaleBy(x: 1.0, y: -1.0)
context.concatenate(page.getDrawingTransform(.cropBox, rect: imageRect, rotate: 0, preserveAspectRatio: true))
context.drawPDFPage(page)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
return nil
}
}
}