2010-09-10 5 views
10

Kann jemand das definitiv beantworten? Es scheint, dass manchmal das Ändern des Rahmens eines UIImageView sein Bild ändert und manchmal nicht.iOS - Soll der Rahmen eines UIImageView geändert werden?

Ich habe ein Bild geladen und ein UIImageView damit erstellt, Größe ca. 100x100. die folgende tun hat absolut keine Wirkung:

myImageView.contentMode = UIViewContentModeScaleAspectFit; 
myImageView.frame = CGRectMake(0, 0, 30, 30); 

Offensichtlich Ich das Bild verkleinern möchten, aber es bleibt nur in voller Größe.

EDIT: Wenn ich dies tun:

myImageView.clipsToBounds = YES; 

ich einen abgeschnittenen 30x30 Teil des Bildes, sondern nur die obere Ecke davon. Wie verkleinere ich das gesamte Bild auf 30x30?

Antwort

2

Ja, Sie machen das Richtige. contentMode verwendet so sollte die Bildgröße in Ihrer Ansicht mit Aspekt erhalten beibehalten. Und offensichtlich sollte das Ändern des Rahmens die Ansicht verschieben und die Größe ändern.

Sind Sie sicher, dass nichts anderes fischig ist? Ist myImageView aus irgendeinem Grund hier nicht? (Wenn es sich um eine vom Schnittstellenersteller erstellte Ansicht handelt, ist die Steckdose angeschlossen?)

+0

es ist definitiv nicht Null, wie es auf dem Bildschirm erscheint und ich kann clipsToBounds darauf einstellen. – sol

1

Sie würden denken, das würde funktionieren, aber es gibt Leute, die überall das gleiche Problem haben. Das einzige Mal, dass ich es gesehen habe, ist Arbeit nicht durch automatische Skalierung, es ist durch tatsächliches Ändern der Größe und Nachziehen des Bildes: How to scale a UIImageView proportionally?

1

Versuchen Sie folgendes:

myImageView. Grenzen = CGRectMake (0, 0, 30, 30);

Ich hatte nicht Glück mit dem Ändern des Rahmens einer UIImageView, um das Bild zu skalieren. Versuchen Sie stattdessen, die Grenzen zu ändern.

3

Alte Frage, aber in meinem Fall war das Problem, die Änderungen in "ViewDidLoad" für den View-Controller zu machen. Versuchen Sie, den Rahmen in "viewDidLayoutSubviews" zu ändern.

- (void)viewDidLayoutSubviews 
{ 
    //do uiimageview frame changing here 
    ... 
}