jpeg in Imageview anzeigen

F

fkmac

Neues Mitglied
Thread Starter
Dabei seit
13.01.2013
Beiträge
19
Reaktionspunkte
1
Hallo
Ich möchte beim Start meiner App mehrere imageviews mit Bildern versehen.es funktioniert nur wenn die Dateien im Arbeitsverzeichnis liegen und direkt mit @"m1.jpeg" angesprochen werden.
Was mache ich verkehrt?
So sieht es aus unten nochmal als Bild.
Schonmal danke für Anregungen.

NSString *path = [@"~/Documents/" stringByResolvingSymlinksInPath];

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *subpath = [path stringByAppendingPathComponent:mad:"Muster/m" ]; // in dokumente auf den Ordner verweisen

for (int i=1; i<11; i++) //es sollen 10 Views mit verschiedenen Bilddatieien gefüllt werden

{

NSString *filePath = subpath; // den Filenamen zusammenbauen

NSString *ireihe = [NSString stringWithFormat: @"%i", i];

filePath=[filePath stringByAppendingString:ireihe];

filePath=[filePath stringByAppendingString:mad:".jpeg"];

BOOL fileExists = [fileManager fileExistsAtPath:filePath];

NSLog(@"File %@ exists: %i", filePath, fileExists);

//den filenamen übergeben

NSImage *img1 = [NSImage imageNamed:filePath]; //das funktioniert nicht.

// NSImage *img1 = [NSImage imageNamed:mad:"m1.jpeg"]; Das hier funktioniert

self.image1.image = img1;
 

Anhänge

  • Bildschirmfoto 2017-03-12 um 13.26.15.png
    Bildschirmfoto 2017-03-12 um 13.26.15.png
    135 KB · Aufrufe: 118
Ich würde sagen ~/Documents ist der falsche Pfad.
Das Image muss im Asset-Katalog oder im Main-Bundle liegen. Wie du zum Main-Bundle kommst, siehe hier: https://developer.apple.com/library...undlesContents/AccessingaBundlesContents.html

Ich habe leider kein konkretes Beispiel für dich, in neueren Projekten habe die Bilder im Asset-Katalog (wo sie auch hingehören, inklusive @2x und @3x Auflösungen), da werden sie dann gefunden.
 

Anhänge

  • Bildschirmfoto 2017-03-12 um 14.01.55.png
    Bildschirmfoto 2017-03-12 um 14.01.55.png
    19,5 KB · Aufrufe: 118
Danke.
Ich habe ja in den Documents einen Ordner namens Muster der die Dateienventhält.
Es funktioniert nur wenn die Dateien im XCODE bereitgestellt werden.
Das mit dem Bundle ist mir nicht ganz klar. wo müssen die Dateien dann liegen?
in dem Arbeitsverzeichnis der App liegen sie ja und es geht nicht.
 
Aber der Pfad dahin ist falsch. Aus der Hilfe zum Parameter name:
Code:
The name of the file. If this is the first time the image is being loaded, the method looks for an image with the specified name in the application’s main bundle. For PNG images, you may omit the filename extension. For all other file formats, always include the filename extension.
Mach es z.B. so ähnlich:
Code:
    NSString *path = [[NSBundle mainBundle] pathForResource:helpFile ofType:nil];

Edit:
Das ist der Pfad der am Gerät für obigen Code rauskommt:

@"/var/containers/Bundle/Application/740A65DA-BE47-4028-85CF-81E6F93AC71F/LocalButler.app/hilfe.html"
 
Ich habe es nicht verstanden.Sorry
 
Dann google nach "imagenamed path", da wird es wohl Beispiele geben. Oder suche es auf stackoverflow.com
 
Jup Danke.
 
Hallo,

schaue Dir am besten mal an, wie mit Pfaden zu arbeiten ist.
Pfade selbst zusammenzusetzen, im Sinne von Text zusammen fummeln, ist nämlich sehr falsch.

NSString bietet sehr viele Methoden für den Umgang mit Pfaden.
Zudem sollte man auch nicht mehr mit Textpfaden arbeiten, sondern mit NSURL.

Viele Grüße
 
Was ich noch hätte sagen können ist das die Dateiprüfung ergibt das die Datei vorhanden ist.
die Übergabe an das view bzw an das *img1 geht nicht.
NSImage *img1 = [NSImage imageNamed:filePath]; //das funktioniert nicht.
 
Lies noch einmal die Doku zum "name" Parameter. Wo erwartet er denn die Datei? Du hast heute Nacht noch viel zu experimentieren
 
So, ich habe es für dich noch einmal getestet, das Ergebnis:

pfad /var/mobile/Containers/Data/Application/D438FE54-D489-4A2A-8B94-A8E241818A2C/Documents/data.db existiert: true
pfad ~/Documents/data.db existiert: false


Der Code dazu im Bild. Das heißt, deine Annahme, das ~/Documents der Dokumentordner ist, ist falsch.

Noch was: Warum glaubst du, dass deine Images überhaupt in Documents liegen? Dieser Ordner enthält eigentlich nur Dateien, die du dort selbst hin kopierst.
Die Bilder liegen eigentlich dort:
let rp = Bundle.main.resourcePath
bzw. in einem Ordner darin, wenn du sie in einem Ordner gepackt hast.

Sieh dir am besten im Finder den Paketinhalt deiner App an (wenn du die App im Simulator laufen hast).

Ich habe dir den Swift Code gezeigt, musst du halt nach Objective-C anpassen. Du bist auch selber schuld, wenn du neue Projekte in Objective-C schreibst, das ist so 1990er Jahre.
 

Anhänge

  • Bildschirmfoto 2017-03-14 um 12.30.03.png
    Bildschirmfoto 2017-03-14 um 12.30.03.png
    57,2 KB · Aufrufe: 114
Zuletzt bearbeitet:
Zurück
Oben Unten