Ich möchte in der Lage sein, ein UI-Objekt wie eine UIImageView darzustellen und ein Bild darin zu kacheln.
Ich konnte CGContextDrawTiledImage verwenden, um den Hintergrund im Hauptfenster, aber nicht eine Bildansicht zu aktualisieren. Ich kann dies tun, wenn ich die DrawRect-Funktion in der MainView-Klasse ändern.
Ich fühle, dass ich nahe bin, aber immer noch etwas vermisse. Kann mir jemand in die richtige Richtung zeigen?
%Vor%}
Nehmen wir an, Sie haben ein CGImageRef
für das Bild, das Sie mit dem Namen tileImage
versehen möchten, und ein UIImageView
namens imageView
. Sie müssen ein UIImage
erstellen, um es der Eigenschaft image
von imageView
zuzuordnen. Sie können das so machen:
Dies erstellt einen Bitmap-Bildkontext der gewünschten Größe, kachelt das Bild in diesen Kontext ein, holt einen UIImage
aus dem Kontext und weist ihn dann dem UIImageView
zu. Sie können diesen Code wirklich überall hinstellen, solange die Bildansicht und das Kachelbild geladen sind und fertig sind.
Wenn Sie nur ein Bild in der Ansicht kacheln möchten, ändern Sie es in eine normale UIView und kacheln Sie den Hintergrund mit UIColor initWithPatternImage:
%Vor%Anstatt zu versuchen, eine UIImageView zu ändern, sollten Sie stattdessen UIView erstellen. UIImageView wurde speziell für ein nicht-gekacheltes Bild entwickelt und einige der Interna können Sie verpfuschen. Es ist nicht wirklich beabsichtigt, in der Art und Weise, wie du es beschreibst, verändert zu werden.
In einer Unterklasse von UIView (UITiledImageView?) können Sie mit der drawRect: -Methode tun, was Sie wollen. Sie können sogar Ivars für das Bild, seine Größe und Tiling-Eigenschaften für mehr Flexibilität und Erweiterbarkeit erstellen.
Mit Beispielprojekt aktualisiert: Ссылка
Der entsprechende Zeichencode:
%Vor%Tut mir leid, dass ich nicht weiß, wie ich den Antworten anderer Kommentare hinzufügen kann. Deshalb habe ich hier eine neue Antwort erstellt:
Ich möchte nur darauf hinweisen, dass die Antwort von Kailoa Kadano einen Bug hat, die image_rect.origin ist nicht richtig initialisiert.
Vor ungefähr drei Wochen habe ich seinen Code in meinem Projekt kopiert, und es scheint zu funktionieren. Gestern versuchte ich jedoch, den Code im iOS-Simulator (iPhone 4.3) auszuführen, er blieb einfach in CGContextDrawTiledImage hängen. Nach dem Hinzufügen der folgenden Zeile, wie in Keremks Antwort gezeigt:
%Vor%es funktioniert wieder!
Es ist ziemlich schwierig, eigentlich habe ich zuerst unter dem iPhone 4.3 Simulator getestet, dann habe ich kürzlich unter dem iPhone 4.0 Simulator getestet, dann gestern, als ich wieder auf den 4.3 Simulator oder 4.2 Simulator umschaltete, tritt das Problem auf. Das ist die image_rect.origin ist undefiniert, manchmal ist es Null Daten, vielleicht hat es manchmal einige zufällige Daten.
Tags und Links iphone cocoa-touch