博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发基础知识--碎片14
阅读量:6689 次
发布时间:2019-06-25

本文共 7373 字,大约阅读时间需要 24 分钟。

 

iOS开发基础知识--碎片14 

1:ZIP文件压缩跟解压,使用ZipArchive

创建/添加一个zip包ZipArchive* zipFile = [[ZipArchive alloc] init];//次数得zipfilename需要一个完整得路径,例如***/Documents/demo.zip[zipFile CreateZipFile2:@"zipfilename"]; //有两种可选得方式进行创建压缩包,带密码和不带密码的[[zipFile CreateZipFile2:@"zipfilename" Password:@"your password"];//接下来就是将需要压缩的文件添加到这个压缩包中//这里第一个参数需要完整的路径,例如:***/Documents/a.txt  newname是指文件在压缩包中的名字,不需要路径,只是一个名称[zipFile addFileToZip:@"fullpath of the file" newname:@"new name of the file without path"];//如果需要将多个文件进行压缩,即压缩文件夹,重复addFileToZip方法即可[zipFile CloseZipFile2]; 解压zip包:ZipArchive* zipFile = [[ZipArchive alloc] init];[zipFile UnzipOpenFile:@"zip file name"]; //同样,对应的就有两种打开zip包的方式,带密码和不带密码[zipFile UnzipOpenFile:@"zip file name" Password:@"password" ];//压缩包释放到的位置,需要一个完整路径 [zipFile UnzipFileTo:@"output path" overwrite:YES];[zipFile UnzipCloseFile];[zipFile release];//记得释放

 

1. 压缩:ZipArchive可以压缩多个文件,只需要把文件一一addFileToZip即可.ZipArchive* zip = [[ZipArchive alloc] init];NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *documentpath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;NSString* l_zipfile = [documentpath stringByAppendingString:@"/test.zip"] ; NSString* image1 = [documentpath stringByAppendingString:@"/image1.jpg"] ;NSString* image2 = [documentpath stringByAppendingString:@"/image2.jpg"] ;        BOOL ret = [zip CreateZipFile2:l_zipfile];ret = [zip addFileToZip:image1 newname:@"image1.jpg"];ret = [zip addFileToZip:image2 newname:@"image2.jpg"];if( ![zip CloseZipFile2] )  {     l_zipfile = @"";  } 2. 解压缩:ZipArchive* zip = [[ZipArchive alloc] init];NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *documentpath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;  //路径地址要注意 NSString* l_zipfile = [documentpath stringByAppendingString:@"/test.zip"] ;NSString* unzipto = [documentpath stringByAppendingString:@"/test"] ;if( [zip UnzipOpenFile:l_zipfile] ) {   BOOL ret = [zip UnzipFileTo:unzipto overWrite:YES];   if( NO==ret )   {   }   [zip UnzipCloseFile]; }

2:UITapGestureRecognizer传值

UIImageView *imageView =[[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 200, 200)];    imageView.image=[UIImageimageNamed:@"filter_laozhaopian_a.png"];    imageView.tag = 10000;  //可以通过这样来给下边的点击事件传值    imageView.userInteractionEnabled = YES;    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizeralloc] initWithTarget:selfaction:@selector(UesrClicked:)];    [imageView addGestureRecognizer:singleTap];    [self.view addSubview:imageView];- (void)UesrClicked:(UITapGestureRecognizer *)recognizer{   NSLog(@"%d",(recognizer.view.tag - 1000));}

 3:自定义self.navigationItem.titleView视图

UIView *titleView=[[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, KTitleViewHeight)];        //最新定义左边的按键    UIButton *leftItemButton=[UIButton buttonWithType:UIButtonTypeCustom];    leftItemButton.frame=CGRectMake(0, 0, KLeftItemButtonWidth, KLeftItemButtonHeight);    [leftItemButton setBackgroundImage:[UIImage imageNamed:@"mapMarkNormal"] forState:UIControlStateNormal];    [leftItemButton setBackgroundImage:[UIImage imageNamed:@"mapMarkSelected"] forState:UIControlStateHighlighted];    [leftItemButton addTarget:self action:@selector(leftButtonAction) forControlEvents:UIControlEventTouchUpInside];    [titleView addSubview:leftItemButton];    [leftItemButton mas_makeConstraints:^(MASConstraintMaker *make) {        make.centerY.equalTo(titleView);        make.left.equalTo(titleView.mas_left).with.offset(5);        make.size.equalTo(CGSizeMake(KLeftItemButtonWidth, KLeftItemButtonHeight));    }];        UILabel *titleLabel=[UILabel new];    titleLabel.textAlignment=NSTextAlignmentCenter;    titleLabel.font=[UIFont systemFontOfSize:14];    titleLabel.text=@"厦山中华公园广场";    [titleView addSubview:titleLabel];    [titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {        make.centerY.equalTo(titleView);        make.left.equalTo(titleView.mas_left).with.offset((SCREEN_WIDTH-KTitleViewTitleWidte-10)/2);    }];        UIButton *downButton=[UIButton new];    [downButton setImage:[UIImage imageNamed:@"FileDownload"] forState:UIControlStateNormal];    [titleView addSubview:downButton];    [downButton mas_makeConstraints:^(MASConstraintMaker *make) {        make.right.equalTo(titleView.mas_right).with.offset(-2);        make.centerY.equalTo(titleView);        make.size.equalTo(CGSizeMake(KTitleViewButtonWidth, KTitleViewButtonHeight));    }];        UILabel *proLabel=[UILabel new];    proLabel.font=[UIFont systemFontOfSize:10];    proLabel.textColor=[UIColor colorWithHexString:KWitTourism_AppTextColor];    proLabel.textAlignment=NSTextAlignmentRight;    proLabel.text=@"正在下载";    [titleView addSubview:proLabel];        [proLabel mas_makeConstraints:^(MASConstraintMaker *make) {        make.right.equalTo(downButton.mas_left).with.offset(-5);        make.centerY.equalTo(titleView);        make.size.equalTo(CGSizeMake(KTitleViewLabelWidth, KTitleViewLabelHeight));    }];        self.navigationItem.titleView=titleView;

4:实现无限滚动的uiscrollview

对滚动的图片数组头尾各增加一张,头则在其前面增加一张尾部的,尾部则插入一张第一张;并在滚动事件中进行处理,改变其位置;主体代码如下(若不自写也可以找相应插件,已封装):/** *  @author wujunyang, 15-06-05 13:06:12 * *  @brief  头部滚动视图布局 */-(void)setupScrollView{    int imgCount=self.imgdatalist.count;        //如果没有值时 用一张默认的图片替换显示    if (imgCount==0) {        UIImageView *featureImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"thirdEmpty"]];        featureImageView.frame=self.headerImageView.frame;        [self.headerImageView addSubview:featureImageView];    }    else{        //实际的图片个数        _actualImgNum=self.imgdatalist.count;        //为实现无限滚动 首先在第一个前面插入一个元素 此元素为最后一个        [self.imgdatalist insertObject:[self.imgdatalist objectAtIndex:([self.imgdatalist count]-1)] atIndex:0];        //在第后一个增加一个原先的第一个 由于上面已被插入一个值 所以原先的第一个变成第二个 所以此处为1        [self.imgdatalist addObject:[self.imgdatalist objectAtIndex:1]];        //增加后的个数 用于处理定义滚动视图内容的总宽度        int imagDataListCount=self.imgdatalist.count;        _scrollView=[[UIScrollView alloc]init];        _scrollView.frame=self.headerImageView.frame;                for (int i=0; i
0) { CGFloat pageWidth = _scrollView.frame.size.width; int page = floor((_scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1; _currentPageIndex=page; //当前页数要是没有超过实际的值时 if (_currentPageIndex<_actualImgNum) { _imageCount=[NSString stringWithFormat:@"%d/%d",_currentPageIndex+1,_actualImgNum]; } else { _imageCount=[NSString stringWithFormat:@"%d/%d",1,_actualImgNum]; } self.imageLabel.text=_imageCount; } else { _imageCountView.hidden=YES; _imageLabel.hidden=YES; } }}/** * @author wujunyang, 15-06-05 11:06:06 * * @brief 滚动事件处理 无限滚动 修改滚动的当前位置 * @param myscrollView <#myscrollView description#> */- (void)scrollViewDidEndDecelerating:(UIScrollView *)myscrollView{ if ([myscrollView isEqual:_scrollView]) { if (_currentPageIndex==0) { [_scrollView setContentOffset:CGPointMake(([self.imgdatalist count]-2)*myscrollView.frame.size.width, 0)]; } if (_currentPageIndex==([self.imgdatalist count]-1)) { [_scrollView setContentOffset:CGPointMake(myscrollView.frame.size.width, 0)]; } }}

转载地址:http://eokoo.baihongyu.com/

你可能感兴趣的文章
Ubuntu下mysql字符集设置
查看>>
Linux下搭建MySQL数据库系统
查看>>
Mysql分页查询丢失数据
查看>>
关于日期处理的工具类
查看>>
java注解 声明
查看>>
【编译打包】httpsqs-1.7-2.el6.src.rpm
查看>>
产品聚焦和市场细分
查看>>
linux下IPTABLES的一些配置
查看>>
Python虚拟环境:Vitualenv
查看>>
反思~~~~~~思绪有点乱
查看>>
jdk提供的并发容器
查看>>
Windows 8企业部署系列之(二)
查看>>
linux终端乱码解决方法
查看>>
Mybatis批量更新和插入数据
查看>>
ubuntu16.04安装php5
查看>>
lamp整合三连发(1)
查看>>
C#前台线程和后台线程
查看>>
spring学习笔记一
查看>>
参加51CTO学院软考培训,我通过啦
查看>>
维护机房里的电脑要掌握哪些知识
查看>>