Tableview不能平滑地滚动静态数据

时间:2016-01-13 11:15:13

标签: ios objective-c xcode uitableview ios9

我正在使用自定义cellheaderView静态图片和footerView但不能滚动,因为它应该滚动,它会卡在中间然后滚动.... ....

标题

-(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数据是静态的

2 个答案:

答案 0 :(得分:2)

在函数 viewForHeaderInSection 内部和 viewForFooterInSection 中使用可重复使用的 UITableViewCell 不要为每个函数调用创建新的UIView和按钮。

答案 1 :(得分:0)

您的表格视图滚动不顺畅,因为viewForHeaderInSectionviewForFooterInSection方法中的视图被多次分配。为什么?因为无论何时向上和向下滚动,都会在需要时调用这两个方法。

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

如有任何疑问,请添加评论..