2015-09-14 4 views
6

मेरे पास एमवीएमआरक्रॉस के साथ एक एक्समरिन प्रोजेक्ट है। वहाँ उप हैं:एक्समारिन: आईओएस लाइब्रेरी प्रोजेक्ट से छवि लोड करने के लिए कैसे करें

  • कोर (PCL)
  • ViewModel (PCL)
  • आईओएस (निष्पादन)

मैं अपने आईओएस परियोजना (Resoureces/images/test_image के लिए एक छवि जोड़ें। png), तो मैं इसे इस कोड के साथ लोड कर सकते हैं:

UIImage image = UIImage.FromBundle("Images/test_icon.png"); 

अब, मैं एक नया subproject उपयोग करना चाहते हैं

  • नियंत्रण (आईओएस लाइब्रेरी)

यह पुस्तकालय एक छवि लोड करना चाहिए। मैंने नियंत्रण (Resoureces/images/test_image.png) पर एक छवि जोड़ा

लेकिन मैं इस छवि को नियंत्रण प्रोजेक्ट में लोड नहीं कर सकता।

मेरा प्रश्न: आईओएस पुस्तकालयों से छवियों को कैसे लोड करें?

public class MyButton : UIButton 
    { 
     public MyButton() : base() 
     { 
      Initialize(); 
     } 

     void Initialize() 
     { 
      // load image from bundle 
      UIImage image = UIImage.FromBundle("Images/test_icon.png"); 
      // image is null 
      this.SetImage (image, UIControlState.Normal); 
     } 
    } 

और ViewController वर्ग है:

public partial class FirstView : MvxViewController 
    { 
     public FirstView() : base ("FirstView", null) 
     { 
     } 

     public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 

      // load image from bundle 
//   UIImage image = UIImage.FromBundle("Images/test_icon.png"); 
//   image is not null if added in iOS Proj 
//   this.imageView.Image = image; 

      MyButton button = new MyButton(); 

      View.Add (button); 

      View.AddConstraint (NSLayoutConstraint.Create (button, NSLayoutAttribute.Right, NSLayoutRelation.Equal, View, NSLayoutAttribute.Right, 1, 10)); 
      View.AddConstraint (NSLayoutConstraint.Create (button, NSLayoutAttribute.Top, NSLayoutRelation.Equal, View, NSLayoutAttribute.Top, 1, 74)); 
      View.AddConstraint (NSLayoutConstraint.Create (button, NSLayoutAttribute.Width, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 0, 64)); 
      View.AddConstraint (NSLayoutConstraint.Create (button, NSLayoutAttribute.Height, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 0, 64)); 
     } 
    } 

enter image description here

यहाँ पूर्ण proj है: https://bitbucket.org/ww_wschaefer/xamarin-first-crossover-app/overview

+1

आप नहीं कर सकते जब तक कि इसकी उपलब्ध bundeled संसाधन के रूप में बंडल से उपयोग करते हैं, मुझे लगता है कि आप 'UIImage.FromFile (" छवियाँ/test_icon.png "का उपयोग करने का बेहतर होगा) '। आपको यह भी देखना चाहिए [प्रश्न] (http://stackoverflow.com/q/18130779/1155650)। –

+1

मैं विश्वास नहीं कर सकता, समाधान इतना आसान है, रोहित धन्यवाद। – iOSfleer

+0

खुश आपकी समस्या हल हो गई थी। यदि आप रुचि रखते हैं तो मैंने स्पष्टीकरण जोड़ा है। –

उत्तर

8

मेरी टिप्पणी पर एक छोटी सी व्याख्या।

आप

UIImage image = UIImage.FromFile("Images/test_icon.png"); 

को

UIImage image = UIImage.FromBundle("Images/test_icon.png"); 

बदलने के लिए के रूप में छवि बंडल संसाधन के रूप में नहीं जोड़ा गया है।

UIImage.FromFile() विधि छवि को असीमित रूप से लोड करती है। यह एप्लिकेशन को बाहरी स्थान से छवि लोड करने की अनुमति भी देता है।

UIImage.FromFile() विधि के विपरीत, UIImage.FromBundle() विधि एक अवरुद्ध कॉल और केवल आवेदन बंडल भीतर से छवियों को लोड करता है। हालांकि, यह इसे लोड करने के बाद छवियों को कैश करता है।

आगे समझने के लिए किताब पर एक नजर है - Developing C# Apps for iPhone and iPad using MonoTouch

+0

@iOSfleer - क्या आप कृपया पुष्टि कर सकते हैं कि यह समाधान आपके लिए काम करता है या नहीं? –

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