花式tableView

前文

tableview是一个以前从来不重视的控件,因为感觉都被封装好了,只要调用方法就可以了,但是用的时候一直会有一些奇奇怪怪得问题,无法达到效果,所以今天决定要将遇到的问题记录下来,当然,collectionView也是一样的


TableView

给所有的cell加效果

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{

[self.cellArr addObject:cell];

//    NSMutableArray *cellsArr = self.cellArr;

if (self.isEditing == YES) {

for (productCenterViewCell *Procell in self.cellArr) {

Procell.isAnimation = YES;

Procell.deleteItem.hidden = NO;

}

}

}


- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath{

if (self.isEditing == NO) {

for (productCenterViewCell *Procell in self.cellArr) {

Procell.isAnimation = NO;

Procell.deleteItem.hidden = YES;

}

}

}


上两个方法用于记录动画的效果,并不能执行动画,要执行还得有一个入口执行过后就用cell的isAnimation属性执行动画并用以上两个方法呈现cell的状态,所以还要在cell里面重写isAnimation的set方法

我是在cell添加了长按手势为入口

-


-(void)pressGesture:(UILongPressGestureRecognizer*)gesture{

//NSArray *cellsArr = [self.choosePicture visibleCells];

NSMutableArray*cellsArr =self.cellArr;

self.isEditing=YES;

for(companyQualificationCell*cellincellsArr) {

cell.isAnimation=YES;

cell.seleteBut.hidden=NO;

}

self.navigationItem.rightBarButtonItem= [[UIBarButtonItemalloc]initWithTitle:@"取消编辑"style:0target:selfaction:@selector(cancelShake)];

}

导航栏右按钮为出口

-(void)cancelShake{

NSArray*cellsArr =self.cellArr;

for(companyQualificationCell*cellincellsArr) {

// [cell.layer removeAllAnimations];

cell.isAnimation=NO;

cell.seleteBut.hidden=YES;

}

self.navigationItem.rightBarButtonItem= [[UIBarButtonItemalloc]initWithImage:[UIImageimageNamed:@"add"]style:0target:selfaction:@selector(add)];

self.isEditing=NO;

}

Cell的setisAnimation方法

写的是抖动的动画

-(void)setIsAnimation:(BOOL)isAnimation{

if(isAnimation ==YES) {

CAKeyframeAnimation* keyAnimaion = [CAKeyframeAnimationanimation];

keyAnimaion.keyPath=@"transform.rotation";

keyAnimaion.values=@[@(-0.5/180.0*M_PI),@(0.5/180.0*M_PI),@(-0.5/180.0*M_PI)];//度数转弧度

keyAnimaion.removedOnCompletion=NO;

keyAnimaion.fillMode=kCAFillModeForwards;

keyAnimaion.duration=0.3;

keyAnimaion.repeatCount=MAXFLOAT;

[self.layeraddAnimation:keyAnimaionforKey:@"edit"];

}else{

[self.layerremoveAnimationForKey:@"edit"];

self.seleteBut.hidden=NO;

}

}


但是那两个方法肯定好像和cellforRow的方法是有联系的,好好使用会优化性能,但是我并不会,以后以待研究

待续


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、禁止手机睡眠[UIApplication sharedApplication].idleTimerDisabl...
    DingGa阅读 1,144评论 1 6
  • 1.自定义控件 a.继承某个控件 b.重写initWithFrame方法可以设置一些它的属性 c.在layouts...
    圍繞的城阅读 3,477评论 2 4
  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 2,547评论 1 14
  • 报考专业 学科英语,目标某211,初试成绩380+,最终以前20%的排名录取。 本科普通二本,基础还算扎实,7,8...
    烈马青葱youth阅读 2,627评论 7 6
  • 今天第一次和简书相遇,在写文之前看了很多文章,绘画,美食等各方面的分享,很喜欢这个平台,有很多志同道合的朋友,互相...
    DameiYao阅读 339评论 0 5