Objective-C 将图像缩略图附加到视图的末尾

Posted

技术标签:

【中文标题】Objective-C 将图像缩略图附加到视图的末尾【英文标题】:Objective-C append image thumbnails onto the end of a view 【发布时间】:2016-05-05 14:58:56 【问题描述】:

我正在尝试将图像附加到视图上,并让它们在整齐的行中显示缩略图。我遇到的问题是,似乎所有图像都只是在角落中相互叠加,因为仅显示数组中的最后一张图像。

- (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];


【问题讨论】:

您在哪里将图像添加到imageArray?从代码中我会假设这个数组总是空的。 这是在别处添加的,但我检查了数组,它不是空的。 好的,我只是想确认一下。然后,检查我的答案。 【参考方案1】:

使用UIStackView 中的addArrangedSubview 而不是addSubview

您应该将所有按钮添加到同一个UIStackView。因此,将UIStackView 的属性添加到您的类中,在viewDidLoad(或情节提要)中对其进行初始化,并将按钮添加到addImageToScreen 中的堆栈视图中。

【讨论】:

好的,我现在有了[photosView addArrangedSubview:container];,它产生了相同的结果。 好的,所以我试了一下,但没有运气。我所做的是在.h 文件中添加@property (strong, nonatomic) IBOutlet UIStackView *photosView;。在 viewDidLoad 中添加了self.photosView = [[UIStackView alloc] initWithFrame:CGRectMake(10, 5, 500, 75)]; 并在 addImageToScreen 中编辑了以下行 [self.photosView addSubview:container]; [self.view addSubview:self.photosView]; 结果是一样的:/ 我应该说我也是一个objective-c新手

以上是关于Objective-C 将图像缩略图附加到视图的末尾的主要内容,如果未能解决你的问题,请参考以下文章

带有 ALAsset 缩略图的低清晰度

如何在 Selenium Extent 报告中添加 Base64 图像的缩略图

在 iPhone 上显示多个图像缩略图时 UI 失真

将图像附加到 Wordpress XMLRPC 中的帖子

如何通过按图像保存在 NSArray 中的顺序单击缩略图来在滚动视图中打开图像?

Drupal - 使用带有视图的灯箱(Rel 属性) - 在输出链接中