ImageView框架更改条件

时间:2015-04-14 07:42:51

标签: ios objective-c uiimageview

我正在构建一个示例项目,我以编程方式创建UIImageView和UIButton并在循环内更改其框架。我的情况是,当我点击我的按钮imagePicker将来,并从库中选择一个图像后,它将如何在imageView和按钮将移动到图像视图旁边。这样,如果我继续选择图像按钮,每次都会移动。我必须连续保留3个项目,但我必须在不使用collectionView或tableview的情况下执行此操作。对于第一行,我的代码工作正常,但是当我第三次选择图像时,它没有按预期工作。屏幕截图将使其更加清晰。

这就是我想要的。

enter image description here

对于第一行,它正常工作

enter image description here

但是当我第三次点击按钮并选择图像时,我就是这样了

enter image description here

移动imageView和按钮的代码是

 int x = 8;
 int y = 8;
 int margin = 9;

 for (int i=1;i<=self.arrImages.count;i++){
 if (i%2 == 0 && i%3!=0) {

     [myImage setFrame:CGRectMake(x+margin+95.0, y, 95.0, 95.0)];
     [_addPhotoButton setFrame:CGRectMake((x+margin+95.0)*2, y, 95.0,95.0)];
     x = 8;
     y = y + margin + 95.0;

 }
 else if (i%3 == 0 && i%2 !=0) {
     [myImage setFrame:CGRectMake(x+margin+95.0+95.0+margin, y, 95.0,95.0)];
     [_addPhotoButton setFrame:CGRectMake(x, y+95.0+margin, 95.0, 95.0)];
     x = 8;
     y = y + margin + 95.0;

  }
  else {

      [myImage setFrame:CGRectMake(x, y, 95.0, 95.0)];
      [_addPhotoButton setFrame:CGRectMake(x+margin+95.0, y, 95.0, 95.0)];

        }

    }

}

我确信在for循环中,我给出的条件是错误的。有谁可以请纠正我的问题。任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:1)

int margin = 9;
CGFloat size = 95.0;

UIImage *chosenImage = [info objectForKey:UIImagePickerControllerOriginalImage];
[self.arrImages addObject:chosenImage];


UIImageView *myImage = [[UIImageView alloc] initWithImage:chosenImage];


myImage.frame = _addPhotoButton.frame;
[self.scrollView addSubview:myImage];

CGFloat x,y;
if(self.arrImages.count %3 == 0) {
    x = 8;
    y = _addPhotoButton.frame.origin.y + _addPhotoButton.frame.size.height + margin;

}
else {
    x = myImage.frame.origin.x + size + margin;
    y = _addPhotoButton.frame.origin.y;
}
_addPhotoButton.frame = CGRectMake(x, y, _addPhotoButton.frame.size.width, _addPhotoButton.frame.size.height);

[self.scrollView setContentSize:CGSizeMake(self.view.frame.size.width, _addPhotoButton.frame.size.height + _addPhotoButton.frame.origin.y + 8)];

[self.scrollView layoutIfNeeded];
[picker dismissViewControllerAnimated:YES completion:NULL];