ios - How do I work in the frame of the UIImageView when using an asynchronous loading library like SDWebImage or UIImageView+AFNetworking? -


एक UIImageView image को सेट करने की क्षमता की तरह पुस्तकालय > ऐसे यूआरएल पर आधारित जो असिंक्रोनस लोड हो जाता है, इस प्रकार छवि को लोड करते समय उपयोगकर्ता इंतजार नहीं करता।

मेरे उपयोग के लिए, मैं एक गैलरी Photos.app के समान बना रहा हूं लेकिन छवियों को यूआरएल से लोड किया जाता है। अगर गैलरी कहती है, तो 50 उच्च संकल्प छवियाँ मैं नहीं चाहता कि उपयोगकर्ता को हर एक को लोड करने के लिए इंतजार करना पड़े, इससे पहले कि वे पहले भी देख सकें, इसलिए ये लाइब्रेरी मेरे उपयोग के मामले के लिए परिपूर्ण हैं (मैं लोड करूँगा पहली छवि तब मांग पर लोड होती है)।

हालांकि, मैं इस रूप में उलझन में हूं कि चित्र को कैसे दिखाना है जब उनके फ़्रेम अभी तक ज्ञात नहीं है क्योंकि छवि अभी तक डाउनलोड नहीं हुई है। यह एक गैर-मुद्दा होगा यदि प्रत्येक व्यक्ति की एक ही सीमा होती है (उदाहरण के लिए, वे अवतार थे), लेकिन यह ऐसा नहीं है।

मेरे मामले में, मैं UIImageViews का उपयोग निम्नानुसार करता हूं:

  // छवि दृश्य बनाएं self.imageView = [[UIImageView alloc] initWithImage: image]; Self.imageView.userInteractionEnabled = हाँ; // स्क्रोल व्यू बनाएं- self.scrollView = [[UIScrollView alloc] initWithFrame: self.view.frame]; Self.scrollView.delegate = self; Self.scrollView.contentSize = self.imageView.bounds.size; Self.scrollView.showsHorizontalScrollIndicator = नहीं; Self.scrollView.showsVerticalScrollIndicator = नहीं; Self.scrollView.decelerationRate = UIScrollViewDecelerationRateFast; // ज़ूम अंगुलियों के साथ-साथ प्रारंभिक ज़ूम स्तर भी देखें तो पूरी छवि दिखाई दे रही है CGFloat scrollViewWidthRatio = CGRectGetWidth (self.scrollView.bounds) / self.scrollView.contentSize.width; CGFloat scrollViewHeightRatio = CGRectGetHeight (self.scrollView.bounds) / self.scrollView.contentSize.height; CGFloat minScale = MIN (स्क्रॉलViewWidthRatio, scrollViewHeightRatio); Self.scrollView.minimumZoomScale = minScale; Self.scrollView.zoomScale = minScale; Self.scrollView.maximumZoomScale = 1.0; // छवि देखें और स्क्रॉल दृश्य देखें [self.scrollView addSubview: self.imageView]; [Self.view addSubview: self.scrollView];  

हालांकि यह सब टूटने लगता है जब छवियों को असिंक्रोनस रूप से लोड होता है। मैं फ्रेम को किस रूप में सेट कर सकता हूं क्योंकि छवि एक लाख अलग-अलग आकारों में से कोई भी हो सकती है? उसी मुद्दे के कारण मैं scrollView.contentSize क्या सेट करूँ? मैं स्क्रॉलव्यू के जूम स्केल की गणना कैसे करूं?

असल में, मैं एक फ़्रेम या सिसकिंग की किसी भी अवधारणा को कैसे नियुक्त करता हूं जब मुझे अभी तक यह नहीं पता? क्या छवि लोड होने पर यह सब ताज़ा करने का कोई तरीका है?

रिले-आउट स्क्रॉल करें सभी उप-दृश्यों को अधिक लागत आएगा । आप जो प्रभाव चाहते हैं, वह सर्वर से डेटा पर निर्भर होना चाहिए, जिससे आप डाउनलोड किए जाने से पहले तस्वीर का आकार प्राप्त कर सकते हैं। दो मुख्य विधि के लिए कई शैलियों हैं:

  1. यूआरएल के साथ डील: * 150, 200 * 150 तस्वीर का आकार
  2. सर्वर वापसी आकार के डेटा जोड़ते हैं {@ "चौड़ाई": 200, @ "ऊंचाई": 150}

आकार का उपयोग करें, आप डिफ़ॉल्ट छवि के साथ लेआउट स्क्रॉल कर सकते हैं, फिर एसिंक्रोनस को लोड कर सकते हैं, और डाउनलोड खत्म होने पर छवि अपडेट कर सकते हैं। / P>

आशा आपकी मदद कर सकता है!


Comments

Popular posts from this blog

ios - How do I use CFArrayRef in Swift? -

eclipse plugin - Run java code error: Workspace is closed -

c - Error on building source code in VC 6 -