UILabel mit Auffüllung in Xamarin.iOS?

8

Ich versuche, in meiner Xamarin.iOS App ein UILabel mit Padding zu erstellen. Die beliebteste Lösung in nativen Objective-C-Apps ist das Überschreiben von drawTextInRect :

%Vor%

So einfach das scheint, ich kann mir nicht vorstellen, wie ich es in C # übersetzen soll. Hier ist mein bester Stich:

%Vor%

Dies scheint den Text des Labels zu verschieben, ändert jedoch nicht die Größe des Labels.

Ich denke, das Hauptproblem ist, dass ich das Xamarin-Äquivalent von UIEdgeInsetsInsetRect nicht finden kann.

Irgendwelche Vorschläge?

    
Josh Earl 16.01.2014, 14:28
quelle

5 Antworten

16

Das C # -Äquivalent der ObjC-Funktion UIEdgeInsetsInsetRect ist eine Instanzmethode von UIEdgeInsets namens InsetRect und ist nicht identisch mit Ihrer RectangleF -Berechnungen (was wahrscheinlich Ihr Problem ist).

Um es zu verwenden, können Sie tun:

%Vor%     
poupou 16.01.2014, 14:36
quelle
1

Ich habe eine generische Padding-UIView-Klasse erstellt, die jedes IOS-UI-Element umschließt, das von UIView abgeleitet ist.

Im Grunde nistet es die gewünschte UIView in eine andere Ansicht ein und kümmert sich um die gesamte Padding-Arbeit.

Verwendung:

%Vor%

Hier ist die Klasse:

%Vor%     
spaceMonster 22.04.2014 22:45
quelle
1

Sie müssen sowohl DrawText als auch TextRectForBounds . Wenn Sie TextRectForBounds nicht überschreiben, wird der Text abgeschnitten. Tatsächlich überschreiben Sie diese Methode, um den durch Auffüllen belegten Speicherplatz zu kompensieren, und bitten iOS, den Text in einem größeren Rechteck zu zeichnen.

%Vor%     
CoyBit 07.03.2018 13:59
quelle
0

Überschreiben Sie die intrinsische Inhaltsgröße nicht, indem Sie DrawText () in der Unterklasse von UILabel überschreiben. Auf diese Weise berücksichtigt das automatische Layout das Padding. Zum Beispiel hier ist meine abgeleitete Klasse von UILabel:

%Vor%     
masterwok 20.10.2016 18:49
quelle
0

Der richtige Weg, dies zu tun, scheint sich seit der ursprünglichen Antwort etwas geändert zu haben, und ich brauchte eine Weile, um die neue korrekte Syntax herauszufinden. Hier ist es für jeden anderen, der darüber stolpert. Dieser Code würde 5 auf der linken und rechten Seite der Ansicht auffüllen. Dies ist in Xamarin.iOS

%Vor%     
jnel899 01.12.2017 19:59
quelle

Tags und Links