gpt4 book ai didi

ios - 里面有固定内容的 UIScrollView

转载 作者:可可西里 更新时间:2023-11-01 06:25:13 25 4
gpt4 key购买 nike

我的问题是:在我的应用程序中,我想使用 UIScrollView

实现类似的功能

enter image description here

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

enter image description here

在这种情况下,“详细信息”、“评论”和“相关”按钮停止滚动并固定在顶部。

有人知道怎么做吗?

最佳答案

如果 ScrollView 还没有委托(delegate),请给它一个委托(delegate)。这可能是您的 View Controller 。

同时为委托(delegate)提供对 float View 的引用。 (示例中, float View 包含“Dettagli”、“Recensioni”和“Correlati”按钮, float View 在三角形缺口处是透明的,阴影也是 float View 的一部分。) View 必须是 ScrollView 的 subview 。

将 float View 框架的“正常”Y 坐标保存在一个实例变量中。例如,如果委托(delegate)是一个 View Controller ,您应该在 viewDidLoad 中执行:

- (void)viewDidLoad {
[super viewDidLoad];
originalFloatingViewY = floatingView.frame.origin.y;
}

在委托(delegate)的scrollViewDidScroll: 方法中,检查 ScrollView 是否已经滚动到 float View “正常”位置的顶部以下。如果是这样,将 float View 移动到可见区域的上边缘:

- (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;
}
}

您还可以通过子类化 UIScrollView 并覆盖 layoutSubviews 来实现。观看来自 WWDC 2011 的“高级 ScrollView 技术”视频有关此技术的更多信息。

关于ios - 里面有固定内容的 UIScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13025959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com