2016-05-05 17 views
0

Ich versuche, Bilder in eine Ansicht einzufügen und sie in einer schönen Reihe mit einem Miniaturbild anzuzeigen. Das Problem, das ich habe, ist, dass es scheint, dass alle Bilder einfach übereinander in der Ecke hinzugefügt werden, da nur das letzte Bild in dem Array angezeigt wird.Objective-C Bildanhänge an das Ende einer Ansicht anhängen

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view from its nib. 


self.notesField.delegate = self; 
NSString *userName = ((ontracAppDelegate*)[UIApplication sharedApplication].delegate).userName; 

self.textField.text = [NSString stringWithFormat:@"Date Created: %@ \nCreated By: %@",[NSDate date], userName]; 

if (self.noteText != nil) { 
    self.notesField.text = self.noteText; 
    self.notesField.editable = NO; 
    self.textLabel.hidden = TRUE; 

} 
[self.view resignFirstResponder]; 
if ([self.imageArray count] != 0) { 
    for (UIImage *image in imageArray) { 
     NSLog(@"Image %@", image); 
     [self addImageToScreen:image]; 
    } 
} 
NSLog(@"imageArray %@", imageArray); 
NSLog(@"self.textField.text %@", self.textField.text); 
NSLog(@"self.notesField.text %@", self.notesField.text); 
} 

-(void) addImageToScreen:(UIImage*) image; 
{ 
int adjustHeight = 0; 
int adjustWidth = 10; 
int imagesInARow = 7; 

int imageHeight = 75; 
int imageWidth = 75; 

int count = [self.imageArray count]; 
self.numberOfPhotosLabel.text = [NSString stringWithFormat:@"%i",count]; 

if (count > 1 && count < imagesInARow) { 
    adjustHeight = 0; 
    adjustWidth = (20 * [self.imageArray indexOfObject:image]) + ([self.imageArray indexOfObject:image] * imageWidth); 
} 


UIButton* container = [[UIButton alloc] init ]; 


CGRect frame = CGRectMake(adjustWidth, 5, imageWidth, imageHeight); 
[container setTag:[self.imageArray indexOfObject:image]]; 
[container setImage:image forState:UIControlStateNormal]; 
[container setFrame:frame]; 
[container addTarget:self action:@selector(displayFullScreenImage:) forControlEvents:UIControlEventAllTouchEvents]; 


UIStackView *photosView = [[UIStackView alloc] initWithFrame:frame]; 
container.frame = photosView.bounds; 

[photosView addSubview:container]; 


[self.view addSubview:photosView]; 

} 
+0

Wo fügen Sie das Bild zum 'imageArray' hinzu? Aus dem Code würde ich annehmen, dass dieses Array immer leer ist. – dasdom

+0

Das wird an anderer Stelle hinzugefügt, aber ich habe das Array überprüft und es ist nicht leer. – jampez77

+0

Ok, ich wollte nur sicher gehen. Dann überprüfe meine Antwort. – dasdom

Antwort

0

Verwenden addArrangedSubview von UIStackView statt addSubview.

Und Sie sollten alle Tasten zu demselben UIStackView hinzufügen. Fügen Sie also eine Klasse für die Klasse zu Ihrer Klasse hinzu, initialisieren Sie sie in viewDidLoad (oder im Storyboard) und fügen Sie die Schaltflächen zu dieser Stapelansicht in addImageToScreen hinzu.

+0

Ok, ich habe jetzt '[photosView addArrangedSubview: container];' und es produziert die gleichen Ergebnisse. – jampez77

+0

Ich habe die Antwort bearbeitet. – dasdom

+0

OK, also habe ich es gegeben, aber kein Glück. Was ich getan habe, ist '@property (starke, nichtatomare) IBOutlet UIStackView * photosView;' in der .h-Datei. Hinzugefügt 'self.photosView = [[UIStackView Alloc] initWithFrame: CGRectMake (10, 5, 500, 75)];' in der ViewDidLoad und bearbeitet die folgende Zeile in addImageToScreen '[self.photosView addSubview: container]; [self.view addSubview: self.photosView]; 'Die Ergebnisse sind die gleichen:/ – jampez77