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?
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).
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.
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: