Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin:如何从iOS库项目加载图像_C#_Xamarin_Xamarin.ios_Uiimage_Mvvmcross - Fatal编程技术网

C# Xamarin:如何从iOS库项目加载图像

C# Xamarin:如何从iOS库项目加载图像,c#,xamarin,xamarin.ios,uiimage,mvvmcross,C#,Xamarin,Xamarin.ios,Uiimage,Mvvmcross,我有一个用MvvmCross设计的Xamarin项目。有几个子项目: 核心(PCL) 视图模型(PCL) iOS(可执行) 如果我将图像添加到iOS项目(resourcese/Images/test_image.png),则可以使用以下代码加载图像: UIImage image = UIImage.FromBundle("Images/test_icon.png"); 现在,我想使用一个新的子项目 控件(iOS库) 此库应加载图像。我向控件添加了一个图像(resourcese/Imag

我有一个用MvvmCross设计的Xamarin项目。有几个子项目:

  • 核心(PCL)
  • 视图模型(PCL)
  • iOS(可执行)
如果我将图像添加到iOS项目(resourcese/Images/test_image.png),则可以使用以下代码加载图像:

UIImage image = UIImage.FromBundle("Images/test_icon.png");
现在,我想使用一个新的子项目

  • 控件(iOS库)
此库应加载图像。我向控件添加了一个图像(resourcese/Images/test_image.png)

但我无法在Controls proj中加载此图像

我的问题:如何从iOS库加载图像

    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)); 
        }
    }


以下是完整的项目:

对我的评论做一点解释

你必须改变

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

因为图像不是作为捆绑资源添加的

UIImage.FromFile()
方法异步加载图像它还允许应用程序从外部位置加载图像

UIImage.FromFile()。但是,它会在加载图像后缓存图像


为了进一步理解,请看一看这本书-

除非它作为bundeled资源提供,否则不能使用from Bundle,我认为最好使用
UIImage.FromFile(“Images/test\u icon.png”)
。你也应该看看这个。我真不敢相信,解决办法这么简单,谢谢Rohit。很高兴你的问题解决了。如果您感兴趣,我已经添加了解释。如果您不介意,请接受答案,如果它解决了您的问题,这样也会对其他人有所帮助@iOSfleer@iOSfleer-您能否确认这是否是适合您的解决方案?
UIImage image = UIImage.FromFile("Images/test_icon.png");