如何在ios中滚动视图

时间:2016-05-26 13:03:35

标签: ios objective-c uitableview

我有一个视图,我想在我的桌面滚动上向上滚动。

enter image description here

这是每当我滚动我的tableview时会向上滚动的视图。但这就是我这样做时会发生的事情:

enter image description here

你可以看到我的目标视图和桌面视图之间有一个黑色空间。

在我的 scrollViewDidScroll 上我做了这个:

CGPoint offset = scrollView.contentOffset;
    self.counter = 0;
    CGRect bounds = scrollView.bounds;



    CGSize size = scrollView.contentSize;
    UIEdgeInsets inset = scrollView.contentInset;
    float y = offset.y + bounds.size.height - inset.bottom;
    float h = size.height;
    float reload_distance = 10;


    float scrollViewHeight = scrollView.frame.size.height;
    float scrollContentSizeHeight = scrollView.contentSize.height;
    float scrollOffset = scrollView.contentOffset.y;
    self.tableData.contentInset = UIEdgeInsetsZero;

    if (scrollOffset == 0)
    {
        [self.topView removeFromSuperview];

        [[self navigationController] setNavigationBarHidden:NO animated:YES];


        [self changeHeight:48];
        self.parentOfPhotoview.frame =CGRectMake(0, 0, self.parentOfPhotoview.frame.size.width, self.heightConstraint.constant);

    }
    else if(scrollOffset>2)
    {

        //[[self navigationController] setNavigationBarHidden:YES animated:YES];
        //[self.view addSubview:_topView];
        if(self.heightConstraint.constant<2)
        {
            [self changeHeight:0];
        }
        else
        {
        [self changeHeight:48-(scrollView.contentOffset.y)];
        self.parentOfPhotoview.frame = CGRectMake(0, -scrollView.contentOffset.y, self.parentOfPhotoview.frame.size.width, self.heightConstraint.constant);
            self.parentOfPhotoview.backgroundColor = [UIColor whiteColor];
        NSLog(@"%f",self.heightConstraint.constant);
        }




    }

    else if (scrollOffset + scrollViewHeight == scrollContentSizeHeight)
    {
        // then we are at the end
    }

scrolloffset 0表示顶部, heightConstraint parentOfPhotoview 的高度限制,这是所需的视图!!

我缺少什么?

2 个答案:

答案 0 :(得分:0)

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 0;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 0;
}

尝试以上代码行。可能是你的问题将得到解决。

答案 1 :(得分:0)

您应该使用与navigationBar具有相同高度的Top设置表contentInset。黑色是没有任何意见的时候。这样您就不必担心更改tableView等的高度了。

但是,我建议使用AutoLayout。

此外,如果您想让parentPhotoView浮动在表格的顶部。您可以在视图中为标题设置该部分。

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

并确保将section中的标题高度设置为与parentPhotoView

相同