imageView2列 瀑布流

本文介绍了一种使用Objective-C实现的图片流布局方法,通过自定义类PicFlowArray来管理两列图片视图的布局和位置调整。每张图片的高度随机生成,并在两列中交替放置,确保视觉效果均衡。

#import "ViewController.h"

#import "PicFlowArray.h"


#define PICFLOW_PAGE_GAP 5


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad

{

    [super viewDidLoad];

    UIImageView * iv1 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 130, arc4random()%100)];

    iv1.backgroundColor = [UIColor redColor];

    

    UIImageView * iv2 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 130, arc4random()%100)];

    iv2.backgroundColor = [UIColor blackColor];

    

    UIImageView * iv3 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 130, arc4random()%100)];

    iv3.backgroundColor = [UIColor yellowColor];

    

    UIImageView * iv4 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 130, arc4random()%100)];

    iv4.backgroundColor = [UIColor orangeColor];

    

    UIImageView * iv5 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 130, arc4random()%100 + 50)];

    iv5.backgroundColor = [UIColor blackColor];

    

    UIImageView * iv6 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 130, arc4random()%100 + 50)];

    iv6.backgroundColor = [UIColor whiteColor];

    

    UIImageView * iv7 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 130, arc4random()%100 + 50)];

    iv7.backgroundColor = [UIColor purpleColor];

    

    UIImageView * iv8 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 130, arc4random()%100 + 50)];

    iv8.backgroundColor = [UIColor blueColor];

    

    UIImageView * iv9 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 130, arc4random()%100 + 50)];

    iv9.backgroundColor = [UIColor greenColor];

    

    NSArray * array = [NSArray arrayWithObjects:iv1,iv2,iv3,iv4,iv5,iv6,iv7,iv8,iv9, nil];

    [self sortPicArray:array];

}


- (void)sortPicArray:(NSArray *)tmpArray

{

    //NSMutableArray * ASF = [[NSMutableArray alloc] initWithCapacity:0];

    PicFlowArray * firstColArray = [[PicFlowArray alloc] init];

    PicFlowArray * secondColArray = [[PicFlowArray alloc] init];

    

    firstColArray.originX = 20;

    firstColArray.originY = 20;

    

    secondColArray.originX = 20 + 130 + 20;

    secondColArray.originY = 20;

    

    for(int i = 0; i < [tmpArray count]; i++)

    {

        if(i == 0)

        {

            UIImageView * tmpImageView = [tmpArray objectAtIndex:i];

            CGSize size = tmpImageView.frame.size;

            tmpImageView.frame = CGRectMake(firstColArray.originX, firstColArray.originY, size.width, size.height);

            [self.view addSubview:tmpImageView];

            [firstColArray.array addObject:tmpImageView];

            firstColArray.originY = size.height + firstColArray.originY + PICFLOW_PAGE_GAP;

        }

        else

        {

            if(firstColArray.originY > secondColArray.originY)

            {

                UIImageView * tmpImageView = [tmpArray objectAtIndex:i];

                CGSize size = tmpImageView.frame.size;

                tmpImageView.frame = CGRectMake(secondColArray.originX, secondColArray.originY, size.width, size.height);

                [self.view addSubview:tmpImageView];

                [secondColArray.array addObject:tmpImageView];

                secondColArray.originY = secondColArray.originY + size.height + PICFLOW_PAGE_GAP;

            }

            else

            {

                UIImageView * tmpImageView = [tmpArray objectAtIndex:i];

                CGSize size = tmpImageView.frame.size;

                tmpImageView.frame = CGRectMake(firstColArray.originX, firstColArray.originY, size.width, size.height);

                [self.view addSubview:tmpImageView];

                [firstColArray.array addObject:tmpImageView];

                firstColArray.originY = firstColArray.originY + size.height + PICFLOW_PAGE_GAP;

            }

        }

    }

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end

乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值