UIButton Hintergrundbild-Offset

7

Gibt es eine Möglichkeit, dem Hintergrundbild von UIButton eine Art Offset hinzuzufügen?

Ich habe ein paar benutzerdefinierte Hintergrundbilder für UIButton . Diese Bilder haben einen 5-Pixel-Schlagschattenbereich um den effektiven Schaltflächenbereich herum. Wenn ich diese Bilder verwende, muss ich das Titeletikett verschieben, den Rahmen anpassen und einige Berechnungen durchführen, um die Schaltflächen korrekt zu platzieren.

Im Idealfall möchte ich etwas wie einen Offset (x = -5px, y = -5px) für dieses Bild (oder UIButton ) festlegen, damit ich das Bild als zuweisen kann Ein Hintergrund zum UIButton wird um diesen Offset horizontal und vertikal verschoben.

In html würde ich eine feste Größe auf der Schaltfläche div und dann offset das Hintergrundbild durch Angabe der Hintergrundposition festlegen.

Gibt es etwas Ähnliches für iOS?

    
gabelkonus 21.10.2013, 10:22
quelle

6 Antworten

12

Das Festlegen von setTitleEdgeInsets: oder setImageEdgeInsets: scheint keine Auswirkungen auf das Hintergrund Bild von UIButton , sondern nur auf das Bild (und den Titel) zu haben ).

Am Ende habe ich -(CGRect)backgroundRectForBounds:(CGRect)bounds überschrieben, wo ich das Begrenzungsrechteck um den benötigten Betrag aufgeblasen habe (5 in meinem Fall).

    
gabelkonus 22.10.2013, 08:14
quelle
10

Das ist eine alte Frage, aber ich denke, die Antwort könnte besser sein. Eine Möglichkeit, dies zu tun, besteht darin, den Knopf zu halten und dann sein Bild zu erfassen. Also, wenn Sie Ihre Schaltflächen in IB eingerichtet haben, könnte dies in objc aussehen:

UIImage *i = [self.button backgroundImageForState:UIControlStateNormal];

Wenn Sie es im Code gemacht haben, dann haben Sie diese Dinge schon!

Und dann möchten Sie Ihre Ausrichtung korrigieren, um den Unterschied auszugleichen.

i = [i imageWithAlignmentRectInsets:UIEdgeInsetsMake(0, 0, -5, -5)];

(oben, links, unten, rechts).

Stellen Sie nun das Schaltflächenbild zurück.

%Vor%

Auto-Layout verwendet Ausrichtungsrects, um die Dinge aufzureihen. Sie müssen möglicherweise einige Konstanten in Ihren Ausrichtungen ändern, um Feinabstimmungen vorzunehmen.

    
smileBot 28.03.2015 19:32
quelle
2

Im Attributinspektor für UIbuton können Sie den Titel- / Bildeinschubwert festlegen.

    
Rocker 21.10.2013 10:35
quelle
1

Sie können mit setTitleEdgeInsets: und setImageEdgeInsets: spielen, um das gewünschte Ergebnis zu erhalten.

    
Rom. 21.10.2013 10:47
quelle
1

Just updaten SmileBot Antwort:

Erstellen Sie eine Schaltfläche (in meinem Fall ein UIBarButtonItem) programmatisch und legen Sie ihr Hintergrundbild mit Offset (+2 px am oberen Rand) fest:

Schnell 3

%Vor%     
Jorge Ramírez 06.09.2017 14:35
quelle
0

Versuchen Sie dies für den Offset

%Vor%     
Indra 21.10.2013 10:33
quelle

Tags und Links