gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:13:10 25 4
gpt4 key购买 nike

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

  • 核心(PCL)
  • View 模型(PCL)
  • iOS(可执行)

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

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

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

  • 控件(iOS 库)

这个库应该加载一个图像。我在控件中添加了一个图像 (Resourceces/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));
}
}

enter image description here

这是完整的项目: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

关于c# - Xamarin:如何从 iOS 库项目加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32566167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com