【发布时间】:2015-09-14 13:31:17
【问题描述】:
我有一个使用 MvvmCross 样式的 Xamarin 项目。有子项目:
- 核心 (PCL)
- ViewModel (PCL)
- iOS(可执行文件)
如果我将图像添加到我的 iOS 项目 (Resourceces/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));
}
}
这里是完整的项目:https://bitbucket.org/ww_wschaefer/xamarin-first-crossover-app/overview
【问题讨论】:
-
你不能从 Bundle 中使用,除非它可以作为捆绑资源使用,我认为你最好使用
UIImage.FromFile("Images/test_icon.png")。你也应该看看这个Question。 -
我不敢相信,解决方案如此简单,谢谢 Rohit。
-
很高兴您的问题得到了解决。如果您有兴趣,我已添加说明。
-
如果您不介意,如果它解决了您的问题,请务必接受答案,以便对其他人也有帮助。 @iOSfleer
标签: c# xamarin xamarin.ios uiimage mvvmcross