2011-02-23 8 views
12

मुझे पता है कि इसके बारे में कुछ चर्चाएं थीं लेकिन मुझे अच्छा जवाब नहीं मिला?सार्वभौमिक ऐप में आईपैड के लिए @ 2x रेटिना छवियों का उपयोग करें? और क्या सेब देशी ऐप्स पसंद करते हैं?

मेरे सवाल कर रहे हैं -

  1. मैं जानता हूँ कि -

    [UIImage imageNamed:@"blabla"] 
    

स्वचालित रूप से सही प्रदर्शित करने के लिए iPhone पर (रेटिना या नहीं) छवि के लिए खोज करेंगे।

मेरे पास एक सार्वभौमिक ऐप है, और मैं आईपैड पर @ 2x संस्करणों का उपयोग करना चाहता हूं, इसलिए मुझे छवियों का एक अन्य संस्करण लोड नहीं करना पड़ेगा (मेरे पास सैकड़ों छोटी छवियां हैं)।

क्या यह संभव है?

  • मैंने कुछ स्थानों पर देखा कि लोगों ने लिखा है कि सेब यूनिवर्सल ऐप्स को हतोत्साहित करता है क्योंकि यह आईफोन और आईपैड के लिए अलग-अलग ऐप्स बनाने की पसंद करता है? क्या यह सही है जब भी मैं प्रत्येक के लिए एक अलग यूआई बनाते हैं?

धन्यवाद

शनि

+0

क्यों एप्पल पसंद करेंगे अलग iPad और iPhone क्षुधा? एक उपयोगकर्ता के रूप में, सार्वभौमिक ऐप्स _much_ मेरे लिए अधिक आकर्षक हैं। –

+0

यही कारण है कि मैंने सोचा कि जब सार्वभौमिक ऐप के लिए जाने का फैसला किया गया था, लेकिन मैंने इसे कुछ स्थानों पर देखा और बस यह सुनिश्चित करना चाहते हैं कि – shannoga

उत्तर

17

iPad के लिए उच्च रेस iphone रेटिना छवियों को डुप्लिकेट नहीं करने का कोई अच्छा में निर्मित तरीका नहीं है। आप अपनी खुद की UIImage विस्तार या उपवर्ग अपने मंच का निर्धारण करने के यूजर इंटरफेस मुहावरा मैक्रो का उपयोग करता है लिख सकता है, तो स्वचालित रूप से छवि नाम को संलग्न "@ 2x":

+ (UIImage *) imageNamedSmart:(NSString *)name 
{ 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
     return [UIImage imageNamed:[NSString stringWithFormat:@"%@@2x.png", name]]; 
    return [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", name]]; 
} 

और आप इसे इस तरह से फोन चाहते हैं:

[UIImage imageNamedSmart:@"myImage"] 
+0

अरे पहले से ही कोशिश कर रहा है लेकिन यह काम नहीं करता है। – shannoga

+0

कौन सा हिस्सा काम नहीं किया? – Bogatyr

+0

अरे मेरी गलती। सच्चाई यह है कि यह मेरी पहली कोशिश थी। लेकिन मैं इस विचार पर कोशिश करने के लिए बेवकूफ था कि मेरे पास अभी भी @ 2x छवियां नहीं हैं। किसी भी तरह धन्यवाद :) – shannoga

0

शायद आप छवियों के सभी छवि संसाधन [email protected] को डुप्लिकेट कर सकते हैं ~ ipad.png। "ipad.png" के मामले में सावधान रहें। लेकिन आपको कैप के साथ विस्तारित छवि को मैन्युअल रूप से प्रबंधित करना होगा (stretchableImageWithLeftCapWidth: topCapHeight :)।

3

मैंने रेटिना छवि मौजूद है या नहीं, यह जांचकर बोगटिर के जवाब में सुधार किया। शायद अत्यधिक जरूरी नहीं है, लेकिन परीक्षण करते समय मुझे यह उपयोगी लगता है कि मैं सिर्फ एक छवि फ़ाइल बना सकता हूं।

+ (UIImage *) imageNamedSmart:(NSString *)name { 
    NSFileManager *fileManager = [[[NSFileManager alloc] init] autorelease]; 
    NSString *retinaFileName = [NSString stringWithFormat:@"%@@2x", name]; 

    NSString *filePath = [[NSBundle mainBundle] pathForResource:retinaFileName ofType:@"png"]; 

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && [fileManager fileExistsAtPath:filePath]) { 
     return [UIImage imageNamed:[retinaFileName stringByAppendingString:@".png"]]; 
    } 
    return [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", name]]; 
} 
67

आप एक छवि "छवि" खोज पथ एक ही होने की संभावना है के रूप में वे हमेशा किया गया है नामित लोड कर रहे हैं:

iPhone:

  • 1) छवि @ 2x ~ iphone.png (केवल रेटिना)
  • 2) [email protected] (रेटिना केवल)
  • 3) छवि ~ iphone.png
  • 4) image.png

आईपैड:

  • 1) छवि @ 2x ~ ipad।png (रेटिना केवल)
  • 2) [email protected] (केवल रेटिना)
  • 3) छवि ~ ipad.png
  • 4) image.png
+0

यदि यह काम करता है, तो यह चयनित उत्तर होना चाहिए। यह कमाल का है। बेशक, आप यह ध्यान रखना चाहेंगे कि यह केवल 4.0+ पर काम करता है। http://stackoverflow.com/a/5535913/362730 – Tim

+0

इसके अलावा - इसका मतलब है कि यदि आपके पास नियमित रूप से आईफोन आकार, रेटिना आईफोन आकार और नियमित आईपैड ग्राफिक्स हैं, तो एक रेटिना आईपैड नियमित आईपैड ग्राफिक्स से पहले रेटिना आईफोन ग्राफिक्स लोड करना पसंद करेगा ? – Tim

+0

आईफोन में क्या अंतर है: 1) [email protected]~iphone.png (केवल रेटिना) 2) [email protected] (केवल रेटिना) – hariszaman

संबंधित मुद्दे