2017-03-10 3 views
0

Ich mache UILabel mit Bild und Text darin. Ich versuche viele Dinge wie unten.UILabel mit Bild und Text in iOS (Xamarin)

Versuchen 1:

diesen Code verwenden

var textAttchment = new NSTextAttachment(); 
textAttchment.Image = UIImage.FromBundle("location_grey_icon"); 
var attachmentString = NSAttributedString.FromAttachment(textAttchment); 
var attributedString = new NSMutableAttributedString(lbl_inr.Text.ToString()); 
this.lbl_inr.AttributedText = attributedString; 

Aber es wird nur der Text angezeigt werden nicht das Bild.

Versuchen 2:

diesen Code mit

var attchment = new NSTextAttachment(); 
attchment.Image = UIImage.FromBundle("location_grey_icon"); 
attchment.Bounds = new CGRect(0, -1, 13, 13); 
var intiliazeText = this.text_inr.AttributedText; 
var newText = new NSMutableAttributedString(intiliazeText); 
newText.Append(NSAttributedString.CreateFrom(attchment)); 
this.text_inr.AttributedText = newText; 

es sowohl das Bild und Text ist angezeigt.

Ausgang:

enter image description here

Was ich will:

aber meine Anforderung ist es, ich Bild gesetzt werden soll, bevor der Text so erstes Bild und dann auf Text.

Jede Hilfe wird geschätzt.

Antwort

2

Ihre Anforderung ist sehr spezifisch, der beste Weg dazu wäre ein benutzerdefiniertes Steuerelement.

UIView + Label-+ UIImageView

und es könnten Sie Ihre Grenzen auf Ihre Bedürfnisse einstellen. Mit dem Designer ist das eine einfache Aufgabe.

Oder Sie könnten versuchen mit einem UITextField, entfernen Sie die Grenzen und deaktivieren Sie es. Dann fügen Sie eine UIImageView als RightView (oder LeftView, wie Sie möchten) hinzu.

var textEdit = new UITextField (new CGRect (15, 100, 200, 30)); 
textEdit.Enabled = false; 

textEdit.Text = "Hello from Xamarin"; 
var xamImageView = new UIImageView (new CGRect (0,0, 25, 25)); 
xamImageView.Image = UIImage.FromBundle ("xamagon"); 
textEdit.RightView = xamImageView; 
textEdit.TextAlignment = UITextAlignment.Right; 
textEdit.RightViewMode = UITextFieldViewMode.Always; 
textEdit.BorderStyle = UITextBorderStyle.None; 

Ergebnis:

results

hoffe, das hilft!

+0

Dank Aber ich möchte dies mit einem nur tun 'UILabel' aber trotzdem danke. – Ironman

+0

sehe meine Antwort Ich führe das mit einem einzigen 'UILabel' durch. – Ironman

+1

@Ironman Wenn Sie sagten "aber meine Anforderung ist, ich möchte Bild vor dem Text so erst Bild und dann Text setzen." Ich habe etwas anderes verstanden. Gut, dass du den Weg gefunden hast. – apineda

1

Code unten verwenden ich verwalten

var attchment = new NSTextAttachment(); 
attchment.Image = UIImage.FromBundle("location_grey_icon"); 
attchment.Bounds = new CGRect(0, -2, 14, 14); 
var newText = new NSMutableAttributedString(); 
newText.Append(NSAttributedString.CreateFrom(attchment)); 
NSAttributedString s = new NSAttributedString(item.Total.ToString()); 
newText.Append(s); 
this.lbl_inr.AttributedText = newText; 

Ausgang:

enter image description here

Verwandte Themen