Wie zeige ich in UII nur einen Teil des Bildes?

8

Ich habe UIImageView , in dem ich 50x100 Bild zeige.

Ich möchte nur einen Teil des Bildes 50x50 (oberer Teil) zeigen?

Wie kann ich das tun?

    
CroiOS 26.12.2012, 16:37
quelle

3 Antworten

8

Ich könnte eine Lösung für Sie haben. Sehen Sie, ob das funktioniert. Im Interface Builder gibt es eine Option zum Füllen von Bildinhalten. Sie können es auf top-left setzen. Folgen Sie dem Bild im Interface Builder -

Danach setzen Sie die Größe von UIImageView auf 50x50 mit "clip-subviews" checked ...

    
Srikar Appalaraju 26.12.2012, 16:43
quelle
10

Sie können das Bild zuschneiden, indem Sie CGImageCreateWithImageInRect , was das Quartz-Grundelement ist, das an CGImageRef arbeitet, also hätten Sie etwas wie:

%Vor%

Beachten Sie bei der Berechnung von cropRect , dass die Angabe in Pixeln erfolgen soll, nicht in Punkten, d. h.

%Vor%

wobei der 0.5 Faktor für die Tatsache verantwortlich ist, dass Sie nur die obere Hälfte möchten.

Wenn Sie nicht auf niedriger Ebene arbeiten möchten, können Sie Ihr Bild zu einer UIView als Hintergrundfarbe hinzufügen und die Eigenschaft clipToBounds CALayer verwenden, um den Ausschnitt zu erstellen:

%Vor%

Setzen Sie auch myView bounds entsprechend.

    
sergio 26.12.2012 16:43
quelle
9

Der einfachste Weg, um ein großes Bild innerhalb von UIImageView zu verschieben.

Nehmen wir an, das Bild der Größe (100, 400) würde 4 Zustände eines Bildes untereinander darstellen. Wir wollen das 2. Bild mit Versatz Y = 100 im Quadrat UIImageView der Größe (100, 100) zeigen. Die Lösung ist:

%Vor%

Hier contentFrame ist normalisierter Frame relativ zur realen UIImage Größe. Also bedeutet "0", dass wir den sichtbaren Teil des Bildes vom linken Rand beginnen, "0,25" bedeutet, dass wir einen vertikalen Versatz von 100 haben, "1" bedeutet, dass wir die volle Breite des Bildes zeigen wollen, und schließlich bedeutet "0,25", dass wir nur 1/4 Bildteil in der Höhe zeigen wollen.

Somit zeigen wir in lokalen Bildkoordinaten den folgenden Rahmen

%Vor%     
malex 29.09.2013 22:51
quelle