2011-12-01 8 views
7

पिछले कुछ दिनों में मैंने एक्सकोड 4.2 में अपने आईओएस 5.0 एप्लिकेशन में एक फोटो व्यूअर को लागू करने का प्रयास किया है। परियोजना द्वारा स्वचालित संदर्भ गणना (एआरसी) के साथ चल रहा है। मैंने Three20 Photo Viewer की कोशिश की है लेकिन इसमें बहुत सारी निर्भरताएं हैं और वास्तव में मेरे प्रोजेक्ट में शामिल करने के लिए एक भारी टुकड़ा है। इसके बाद मैंने EGOPhotoViewer की कोशिश की है जो वास्तव में मेरे उद्देश्य के लिए एक महान समाधान के रूप में प्रतीत होता है - लेकिन दुख की बात है कि मैं एआरसी का समर्थन नहीं करता और इसके कारण, मैं इसे अपने प्रोजेक्ट के अंदर संकलित नहीं कर सकता।उद्देश्य-सी: एआरसी समर्थन के साथ आईओएस के लिए फोटो व्यूअर?

क्या कोई आईओएस के लिए एक फोटो व्यूअर जानता है जो एआरसी का समर्थन करता है - या किसी भी तरह से, एआरसी के साथ चल रहे एक परियोजना में लाइब्रेरी के रूप में जोड़ा जा सकता है?

उत्तर

12

फ़ाइल में -fno-objc-arc जोड़कर व्यक्तिगत फ़ाइलों के लिए एआरसी को अक्षम करना संभव है।

किसी फ़ाइल के लिए एआरसी अक्षम करने के लिए Xcode 4 में अपना प्रोजेक्ट चुनें निर्माण चरणों के टैब जाना, फ़ाइलें आप एआरसी के लिए निष्क्रिय करना चाहते हैं का चयन करें, इन करने के लिए -fno-ObjC-चाप संकलक फ्लैग जोड़ने फ़ाइलें।

+0

आप सोचो! वह वास्तव में मेरे दिन बचाया। – dhrm

15

आप MWPhotoBrowser पर एक नज़र लेने के लिए चाहते हो सकता है - आप एक स्थिर पुस्तकालय जो अपने प्रोजेक्ट की एआरसी सेटिंग्स की स्वतंत्र रूप से काम करेंगे के रूप में अपनी परियोजना के लिए जोड़ सकते हैं।

MWPhotoBrowser या तो UIImage ऑब्जेक्ट्स या फ़ाइलों, वेब छवियों या लाइब्रेरी संपत्तियों के URL प्रदान करके एक या अधिक छवियां प्रदर्शित कर सकता है। फोटो ब्राउज़र वेब से फ़ोटो के डाउनलोड और कैशिंग को सहजता से संभालता है। तस्वीरें ज़ूम और पैन की जा सकती हैं, और वैकल्पिक (अनुकूलन योग्य) कैप्शन प्रदर्शित किए जा सकते हैं। ब्राउज़र का उपयोग उपयोगकर्ता को ग्रिड या मुख्य छवि दृश्य का उपयोग करके एक या अधिक फ़ोटो चुनने की अनुमति देने के लिए भी किया जा सकता है।

MWPhotoBrowser Screenshots

+0

यह बहुत उपयोगी लग रहा है। वर्तमान में मैं अपनी परियोजना के लिए EGOPhotoViewer का उपयोग कर रहा हूं। क्या आप EGOPhotoViewer की तुलना में अपने ब्राउज़र के फायदे जानते हैं? – dhrm

+0

एक बात; आपको कई भाषाओं के लिए समर्थन जोड़ने के लिए और अधिक आसान बनाना चाहिए। – dhrm

+1

धन्यवाद! मैंने केवल EGOPhotoViewer पर एक त्वरित रूप से देखा है लेकिन मुझे लगता है कि वे बहुत समान हैं। मैंने अपना बहुत साफ, उपयोग करने में आसान और अनुकूलित करने की कोशिश की है; यदि आपको समय मिलता है तो एक नाटक करें! कई भाषाओं के सुझाव के लिए धन्यवाद। केवल कुछ तार हैं जो प्रभावित होंगे इसलिए यह मुश्किल नहीं होना चाहिए। मैं इस पर गौर करूंगा! –

0

यहाँ कैसे मैंने किया है:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
    self.startX = scrollView.contentOffset.x; 
} 

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
{ 
    //NSLog(@"scrollViewDidEndDragging"); 
    self.endX = scrollView.contentOffset.x; 

    self.photoIdx = (int)self.startX/Normalize(1160); 

    if (decelerate == FALSE) 
    { 
    int intoThePhoto = (int)self.photoScrollView.contentOffset.x % Normalize(1160); 

    if (intoThePhoto < Normalize(1060/2)) 
     [scrollView setContentOffset:CGPointMake(Normalize(1160)*self.photoIdx,0) animated:YES]; 
    else 
     [scrollView setContentOffset:CGPointMake(Normalize(1160)*(self.photoIdx+1),0) animated:YES]; 

    } 

} 

-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{ 

    if ((self.endX - self.startX) > 0 && self.photoIdx < ([self.photos count] -1)) 
    [scrollView setContentOffset:CGPointMake(Normalize(1160)*(self.photoIdx+1),0) animated:YES]; 
    else if ((self.endX - self.startX) < 0 && self.photoIdx != 0) 
    [scrollView setContentOffset:CGPointMake(Normalize(1160)*(self.photoIdx-1),0) animated:YES]; 
}