内部有固定内容的UIScrollView

Fry*_*Fry 3 uiscrollview ios

我的问题是:在我的应用程序中,我想要实现这样的事情 UIScrollView

在此输入图像描述

一个UIScrollView白衣他所有的内容里面.但是当我到达屏幕的顶部(或者可能是屏幕的底部)时,我想要锚定一些内容,例如AppStore(iOS 6).

在此输入图像描述

在这种情况下,"Detail","Review"和"Related"按钮停止滚动并保持固定在顶部.

任何人都知道该怎么办?

rob*_*off 8

如果代理没有代理,请为其提供代理.这可能是你的视图控制器.

同时为委托提供浮动视图的引用.(在该示例中,浮动视图包含"Dettagli","Recensioni"和"Correlati"按钮,浮动视图在三角形切口所在的位置是透明的,并且阴影也是浮动视图的一部分.)浮动视图必须是滚动视图的子视图.

将浮动视图框架的"正常"Y坐标保存在实例变量中.例如,如果委托是视图控制器,您应该在viewDidLoad以下位置执行:

- (void)viewDidLoad {
    [super viewDidLoad];
    originalFloatingViewY = floatingView.frame.origin.y;
}
Run Code Online (Sandbox Code Playgroud)

在委托scrollViewDidScroll:方法中,检查滚动视图是否已滚动到浮动视图"正常"位置的顶部下方.如果是这样,请将浮动视图移动到可见区域的上边缘:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    [self updateFloatingViewFrame];
}

- (void)updateFloatingViewFrame {
    CGPoint contentOffset = scrollView.contentOffset;

    // The floating view should be at its original position or at top of
    // the visible area, whichever is lower.
    CGFloat y = MAX(contentOffset.y, originalFloatingViewY);

    CGRect frame = floatingView.frame;
    if (y != frame.origin.y) {
        frame.origin.y = y;
        floatingView.frame = frame;
    }
}
Run Code Online (Sandbox Code Playgroud)

您也可以通过子类化UIScrollView和重写来完成layoutSubviews.观看WWDC 2011的"高级ScrollView技术"视频,了解有关此技术的更多信息.