垂直UIScrollView,在子视图上具有最大y位置

时间:2016-03-08 13:41:33

标签: ios objective-c iphone uiscrollview

我有一个带有2个按钮的垂直UIScrollView。我需要这样做,当你滚动时,按钮点击iPhone屏幕的顶部,然后不再使用UIScrollView滚动,直到滚动视图重新出现。

以下是该页面的内容:

Example Image

“我的民意调查”和“关注”按钮在向上滚动时,需要保持在蓝色栏下面,上面写着“我”。实现这一目标的最佳方法是什么?谢谢! (我正在使用Objective-C)

1 个答案:

答案 0 :(得分:0)

好的我终于弄清楚了。这是我的代码:

-(void) scrollViewDidScroll:(UIScrollView *)scrollView {
    CGPoint menuBarPointRelevantToScreen = [self.view convertPoint:self.menuBarView.frame.origin fromView:self.menuBarView];
    int yOfMenuBarWhenScrolling = menuBarPointRelevantToScreen.y-scrollView.contentOffset.y;
    int bottomOfTopBarView = self.topBarView.frame.origin.y+self.topBarView.frame.size.height;
    if(yOfMenuBarWhenScrolling < bottomOfTopBarView && self.menuBarView.superview == self.parentScrollView){
        [self.menuBarView removeFromSuperview];
        [POUIConstraintManager spaceTopOf:self.menuBarView fromBottomOf:self.topBarView space:0];
        [self.view addSubview:self.menuBarView];
    }
    else if(scrollView.contentOffset.y<=constantMenuBarY && self.menuBarView.superview == self.view){
        [self.menuBarView removeFromSuperview];
        [self setupMenuBarPosition];
        [self.parentScrollView addSubview:self.menuBarView];
    }
}

很难解释,但希望上面的代码可以帮助某人。基本上我做的如下: 首先,我需要弄清楚菜单项(&#34; My Polls,Follow&#34;)距离顶部栏有多远(&#34; Me&#34;)。为了实现这一点,我将菜单项的y坐标与包含所有内容的视图相关(相同视图顶部栏(&#34; Me&#34;)已打开)。然后我只是从中减去滚动视图的y偏移量,这给了我两者之间的距离。 从那里我只使用一个if语句来确定菜单栏是否触摸了顶部栏,这样我就可以将其从滚动视图中取出并将其添加到顶部栏的相同视图中,直接将其保持在顶栏下方,直到滚动视图已经回落。

(注意:constantMenuBarY只是一个常量整数,菜单栏假设在滚动视图上,而POUIConstraintManager只是我更容易定位视图的类)

我希望至少有道理。任何试图解决这个问题的人都可能最好只看一下代码。

<强>更新 我必须通过一些必要的改变来改进它,以使其在各种情况下起作用。如果有人需要帮助,请发表评论我可以更好地解释它。