加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:20:40 所属栏目:百科 来源:网络整理
导读:我有一个用MvvmCross设计的Xamarin项目.有子项目: 核心(PCL) ViewModel(PCL) iOS(可执行文件) 如果我将图像添加到我的iOS项目(Resoureces / Images / test_image.png),那么我可以使用以下代码加载它: UIImage image = UIImage.FromBundle("Images/test_ico
我有一个用MvvmCross设计的Xamarin项目.有子项目:

>核心(PCL)
> ViewModel(PCL)
> iOS(可执行文件)

如果我将图像添加到我的iOS项目(Resoureces / Images / test_image.png),那么我可以使用以下代码加载它:

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

现在,我想使用一个新的子项目

>控件(iOS库)

该库应该加载图像.我在Controls(Resoureces / 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,1,10));
            View.AddConstraint (NSLayoutConstraint.Create (button,NSLayoutAttribute.Top,74));
            View.AddConstraint (NSLayoutConstraint.Create (button,NSLayoutAttribute.Width,null,NSLayoutAttribute.NoAttribute,64)); 
            View.AddConstraint (NSLayoutConstraint.Create (button,NSLayoutAttribute.Height,64)); 
        }
    }

这是完整的项目:https://bitbucket.org/ww_wschaefer/xamarin-first-crossover-app/overview

解决方法

对我的评论有点解释.

你必须改变

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

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

由于图像未添加为捆绑资源.

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

与UIImage.FromFile()方法不同,UIImage.FromBundle()方法是一个阻塞调用,只加载应用程序包中的图像.但是,它会在加载后缓存图像.

为了进一步了解,请查看本书 – Developing C# Apps for iPhone and iPad using MonoTouch

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读