2009-04-22 3 views
0

Wenn ich versuche, dieseWarum kann ich die Begrenzungsrechteckbreite eines UIImageVies nicht festlegen?

myUIImageView.bounds.size.width = 50.0f; 

dann bekomme ich einen Fehler: ungültige lvalue in Zuordnung

Aber wenn ich das tue, kompiliert. Obwohl es eine Menge Extraarbeit ist

CGRect newRect = myUIImageView.bounds; 
newRect.size.width = 50.0f; 
myUIImageView.bounds = newRect; 

Obwohl das kompiliert, wird nichts passieren. Der Rahmen meines UIImageView ist 300 breit und mit einem Bild gefüllt, das genau 300 Pixel breit ist. Es passt perfekt. Also wollte ich dieses Bild nun (nur zum Spaß) strecken, also müsste ich das Begrenzungsrechteck in der Breite verkleinern. Sagen wir 50.0. Aber leider wird das Bild nicht wie erwartet geschichtet. Es passiert einfach nichts. Zwei Zeilen unter diesem Code verschiebe ich das Bild herum. Das funktioniert.

Antwort

0

Eigenschaften Größe und Ausrichtung sind schreibgeschützt.

Grenzen sind nicht readonly.

Let ist, warum Sie Grenzen ändern kann, aber die Größe kann nicht

+0

Dank

Um die Breite Sie die Grenzen aus der Sicht, speichern sie irgendwo bekommen müssen sich ändern, auf dem gespeicherten CGRect die Breite Wert ändern und den Blick auf seinen neuen Grenzen informieren. Was bedeutet der "Ivalue" in der Fehlermeldung "ungültiger Lvalue in Zuweisung"? – Thanks

+0

Lvalue ist 'linker Wert' Ausdruck, der links von '=' bleiben kann – oxigen

0

(für mich) Dies funktioniert ändern;

CGRect frame = myUIImageView.frame; 
frame.size.width = 50.0; 
myUIImageView.frame = frame; 

bereite ..

+0

ja, das funktioniert. Aber ich möchte den Rahmen nicht ändern. Ich möchte die Grenzen ändern. – Thanks

+0

Dann denke ich, ich bin ahnungslos, was der Unterschied ist. – Jake

+0

gibt es einen großen Unterschied. Siehe http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaViewsGuide/Coordinates/Coordinates.html – Thanks

2

-[UIView bounds] gibt eine neues CGRect die x, y, Breiten- und Höhenwerte die Grenzen der Ansicht enthält. Das Ändern der Werte für dieses neue CGRect hätte keine Auswirkungen und GCC erkennt dies. mit -[UIView setBounds:]

+0

Vielen Dank! Ich habe das versucht, aber das hat auch keine Auswirkungen auf meine UIImageView. Gibt es einen speziellen Inhaltsmodus, den ich einrichten muss, um mein Bild zu strecken oder zu verwerfen? – Thanks

+0

UIImageView manipuliert das Bild überhaupt nicht, sondern zeichnet es so wie es ist innerhalb der Grenzen. Um die Ansicht zu skalieren, rufen Sie einfach [view setTransform: CGAffineTransformMakeScale (0.5f, 1.0f)]; – rpetrich

Verwandte Themen