Tableview不能使用静态数据平滑滚动

我使用静态图像和footerView自定义cellheaderView ,但不滚动,它应该滚动的顺利,它被卡在中间,然后滚动……..

 -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ UIView *headerview = [[UIView alloc]init]; if (section == 2) { headerview.frame = CGRectMake(0, 30, tableView.frame.size.width, 117); Button = [[UIButton alloc]initWithFrame:CGRectMake(0, 18, headerview.frame.size.width, 100)]; UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(5, 0, tableView.frame.size.width, 17)]; label.text = @"Siddharth and hiren Like this"; label.font = [UIFont systemFontOfSize:10]; label.textColor = [UIColor blackColor]; [headerview addSubview:label]; } else { headerview.frame = CGRectMake(0, 0, tableView.frame.size.width, 100); Button = [[UIButton alloc]initWithFrame:headerview.frame]; } // sheap top left and top right UIBezierPath *maskPath; maskPath = [UIBezierPath bezierPathWithRoundedRect:headerview.bounds byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerTopRight) cornerRadii:CGSizeMake(7.0, 7.0)]; CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; headerview.frame = headerview.bounds; maskLayer.path = maskPath.CGPath; headerview.layer.mask = maskLayer; // shape for button bottom headerview.backgroundColor = [UIColor whiteColor]; CALayer *bottomBorder = [CALayer layer]; bottomBorder.frame = CGRectMake(0.0f, 0, headerview.frame.size.width, 1); bottomBorder.backgroundColor = [UIColor colorWithRed:217/255.0f green:217/255.0f blue:217/255.0f alpha:1].CGColor; bottomBorder.shadowColor = [[UIColor blackColor] CGColor]; bottomBorder.shadowOpacity = 0.9f; bottomBorder.shadowRadius = 0.3f; [headerview.layer addSublayer:bottomBorder]; headerview.layer.shouldRasterize = YES; // Button Imageview UIImageView *buttonimg = [[UIImageView alloc]initWithFrame:Button.bounds]; buttonimg.image = [UIImage imageNamed:[_SecImgArray objectAtIndex:section]]; buttonimg.layer.shouldRasterize = YES; [Button addSubview:buttonimg]; // imageview overlay UIView *overlay = [[UIView alloc]initWithFrame:Button.bounds]; overlay.alpha = 0.3; overlay.backgroundColor = [UIColor blackColor]; overlay.layer.shouldRasterize = YES; [buttonimg addSubview:overlay]; [Button addTarget:self action:@selector(Expand: and:) forControlEvents:UIControlEventTouchUpInside]; Button.tag = section; if ([[AllNewsdic objectForKey:@"posts"] count] == 0) { [Button setTitle:[[[DownloadData objectForKey:@"posts"]objectAtIndex:section]objectForKey:@"title"] forState:UIControlStateNormal]; } else { [Button setTitle:[[[AllNewsdic objectForKey:@"posts"]objectAtIndex:section]objectForKey:@"title"] forState:UIControlStateNormal]; } [Button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; Button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; Button.contentVerticalAlignment = UIControlContentVerticalAlignmentBottom; Button.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0); Button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping; Button.titleLabel.numberOfLines = 0; Button.titleLabel.font = [UIFont fontWithName:@"Avenir-Black" size:12]; Button.layer.shadowColor = [UIColor greenColor].CGColor; Button.layer.shadowOpacity = 0.4; Button.layer.shadowRadius = 1.0f; Button.layer.cornerRadius = 7; Button.layer.masksToBounds = YES; Button.layer.shouldRasterize = YES; [headerview addSubview:Button]; return headerview;} 

页脚

 -(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ UIView *fotter = [[UIView alloc]initWithFrame:CGRectMake(0, -10, tableView.frame.size.width, 30)]; fotter.backgroundColor = [UIColor whiteColor]; // corner redius UIBezierPath *maskPath; maskPath = [UIBezierPath bezierPathWithRoundedRect:fotter.bounds byRoundingCorners:(UIRectCornerBottomLeft|UIRectCornerBottomRight) cornerRadii:CGSizeMake(7.0, 7.0)]; CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; fotter.frame = fotter.bounds; maskLayer.path = maskPath.CGPath; // maskLayer.backgroundColor = [UIColor colorWithRed:217/255.0f green:217/255.0f blue:217/255.0f alpha:1].CGColor; fotter.layer.mask = maskLayer; // Bottom layer CALayer *bottomBorder = [CALayer layer]; bottomBorder.frame = CGRectMake(0.0f, 32, fotter.frame.size.width, 2); bottomBorder.backgroundColor = [UIColor blackColor].CGColor; [fotter.layer addSublayer:bottomBorder]; // top Layer CALayer *topLayer = [CALayer layer]; topLayer.frame = CGRectMake(13, 0, fotter.frame.size.width - 26, 0.7); topLayer.backgroundColor = [UIColor colorWithRed:197/255.0f green:187/255.0f blue:188/255.0f alpha:1].CGColor; topLayer.shadowOpacity = 0.6f; topLayer.shadowRadius = 0.5f; [fotter.layer addSublayer:topLayer]; // Like bUtton likebutton = [[UIButton alloc]initWithFrame:CGRectMake(0, -3, fotter.frame.size.width/2, fotter.frame.size.height + 3)]; likebutton.titleLabel.font = [UIFont systemFontOfSize:10]; likebutton.titleLabel.tintColor = [UIColor colorWithRed:197/255.0f green:187/255.0f blue:188/255.0f alpha:1]; [likebutton addTarget:self action:@selector(like:) forControlEvents:UIControlEventTouchUpInside]; [likebutton setTitle:@"1 likes" forState:UIControlStateNormal]; likebutton.tag = section; like = [[UIImageView alloc]initWithFrame:CGRectMake(40 ,8, 15, 15)]; like.image = [UIImage imageNamed:@"SimpleLike.png"]; [likebutton addSubview:like]; [likebutton setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; [fotter addSubview:likebutton]; // Follow Button NSLog(@"%f",fotter.frame.size.width/2 + 1); follow = [[UIButton alloc]initWithFrame:CGRectMake(fotter.frame.size.width/2 , -3, fotter.frame.size.width/2, fotter.frame.size.height + 3)]; follow.titleLabel.font = [UIFont systemFontOfSize:10]; follow.titleLabel.tintColor = [UIColor colorWithRed:197/255.0f green:187/255.0f blue:188/255.0f alpha:1]; [follow setTitle:@"Follow" forState:UIControlStateNormal]; followimage = [[UIImageView alloc]initWithFrame:CGRectMake(35 ,8, 17, 17)]; followimage.image = [UIImage imageNamed:@"Follow.png"]; [follow addSubview:followimage]; [follow setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; follow.tag = section; [follow addTarget:self action:@selector(Follow:) forControlEvents:UIControlEventTouchUpInside]; [fotter addSubview:follow]; return fotter;} 

细胞

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ AllNewsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AllNews"]; cell.one.text = [one objectAtIndex:indexPath.section]; cell.two.text = [two objectAtIndex:indexPath.section]; cell.three.text = [three objectAtIndex:indexPath.section]; [cell.three sizeToFit]; return cell;} 

如何设置tableview的滚动平滑有效 如何设置界面属性 tableview的数据是静态的

在函数viewForHeaderInSectionviewForFooterInSection中使用可重用的UITableViewCell不要为每个函数调用创build新的UIView和button。

您的表视图滚动不平滑,因为viewForHeaderInSectionviewForFooterInSection方法内的视图分配多次。 为什么? 因为每当你上下滚动时,这两个方法都会在需要时被调用。

检查是否已经分配了标题视图。 如果它是nil ,然后分配并返回它。 否则,只要返回它。 在页脚视图的情况下也是如此。

在有任何疑问的情况下添加评论