Xamarin: so laden Sie Bild aus der iOS-library-Projekt
Habe ich einen Xamarin Projekt gestylt mit MvvmCross. Es gibt Unterprojekte:
- Core (PCL)
- ViewModel (PCL)
- iOS (Executable)
Wenn ich ein Bild hinzufügen, um meine iOS-Projekt (Resoureces/Images/test_image.png), dann kann ich laden Sie es mit diesem code:
UIImage image = UIImage.FromBundle("Images/test_icon.png");
Nun, ich will ein neues Teilprojekt
- Steuerelemente (iOS-Bibliothek)
Diese Bibliothek soll ein Bild laden. Ich fügte hinzu, ein Bild, um die Steuerelemente (Resoureces/Images/test_image.png)
Aber ich kann nicht laden Sie dieses Bild in Kontrollen proj.
Meine Frage: Wie lädt man Bilder vom iOS-Bibliotheken?
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);
}
}
und die ViewController-Klasse :
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));
}
}
Hier ist voll proj: https://bitbucket.org/ww_wschaefer/xamarin-first-crossover-app/overview
- Sie kann die Verwendung von Bundle-es sei denn, Ihr zur Verfügung als bundeled Ressource, ich denke, Sie würden besser mit
UIImage.FromFile("Images/test_icon.png")
. Sie sollten auch einen Blick auf dieses Frage. - Ich kann nicht glauben, die Lösung ist so einfach, Dank Rohit.
- froh, dass Ihr problem gelöst wurde. Ich habe die Erklärung, wenn Sie interessiert sind.
- Wenn Sie nichts dagegen haben, bitte akzeptieren Sie die Antwort, wenn es dein problem gelöst hat, so dass es hilfreich wäre, auch für andere. @iOSfleer
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine kleine Erklärung zu meinem Kommentar.
Müssen Sie ändern
zu
Da das Bild nicht Hinzugefügt, wie die Ressourcen gebündelt.
Den
UIImage.FromFile()
- Methode lädt das Bild asynchron. Es ermöglicht auch die Anwendung laden Sie das Bild von einem externen Standort.Im Gegensatz zu den
UIImage.FromFile()
Methode, dieUIImage.FromBundle()
Methode ist ein blockierender Aufruf und nur jede Menge Bilder aus dem application bundle. Allerdings speichert es die Bilder nach dem laden.Weitere Verständnis haben Sie einen Blick auf das Buch - Entwicklung von C# Apps für iPhone und iPad mit MonoTouch