自定义动态数量图片显示视图(UIImageView)

来源:互联网 发布:桥接的网络不稳定 编辑:程序博客网 时间:2024/06/06 13:00

效果图


代码示例

注意:

1、计算x坐标的变化,换行时的特别处理。每行的第一个x坐标都是相同的,即取模计算余数为0时,则重置每行的第一个x坐标为固定值。

2、计算y坐标的变化,不存在换行的处理。

3、图片显示子视图处理完成后,注意父视图大小的设置。

// 父视图self.bgView = [[UIView alloc] initWithFrame:CGRectMake(10.0, 10.0, (self.view.frame.size.width - 10.0 * 2), 80.0)];[self.view addSubview:self.bgView];self.bgView.backgroundColor = [UIColor colorWithWhite:0.1 alpha:0.2];    [self showImages];
// 动太数量图片视图设置方法- (void)showImages{    // 移除旧图    for (NSInteger i = self.bgView.subviews.count; i > 0; i--)    {        [[self.bgView.subviews objectAtIndex:i-1] removeFromSuperview];    }        UIImage *image = [UIImage imageNamed:@"girl.jpg"];        NSInteger colomnNumber = 3;    CGFloat origin = 10.0;    CGFloat sizeImage = ((self.bgView.frame.size.width - (colomnNumber + 1) * origin) / colomnNumber);    CGFloat originX = origin;    CGFloat originY = origin;        // 随机图片数量    NSInteger count = arc4random() % 10 + 1;    NSLog(@"********** count = %@ **********", @(count));    for (NSInteger i = 0; i < count; i++)    {        // 计算x坐标变化        originX = (i % colomnNumber * (sizeImage + origin) + origin);        if (i % colomnNumber == 0)        {            originX = origin;        }        // 计算y坐标变化        originY = (i / colomnNumber * (sizeImage + origin) + origin);                CGRect rect = CGRectMake(originX, originY, sizeImage, sizeImage);                UIImageView *imageview = [[UIImageView alloc] initWithImage:image];        [self.bgView addSubview:imageview];        imageview.frame = rect;        imageview.backgroundColor = [UIColor colorWithWhite:0.2 alpha:0.2];           NSLog(@"********** %@ imageview.frame = %@ **********", @(i), NSStringFromCGRect(imageview.frame));    }        // 重置父视图的高    CGRect rect = self.bgView.frame;    rect.size.height = (originY + sizeImage + origin);    self.bgView.frame = rect;        NSLog(@"********** self.bgView.frame = %@ **********", NSStringFromCGRect(self.bgView.frame));}




0 0