gpt4 book ai didi

iphone - 是否可以向 UIScrollView 添加固定内容?

转载 作者:技术小花猫 更新时间:2023-10-29 10:13:58 25 4
gpt4 key购买 nike

我想创建一个 UITableViewUIScrollView 的子类,当内容偏移量 > 0 时,它的顶部会有一些阴影,表示内容是可滚动的。 (见附图) enter image description here

我现在实现它的方式是使用 UIViewController,它是 tableView 的委托(delegate)。我只是在 tableView 的顶部有一个 GradientView,我拦截了 scrollViewDidScroll: 来设置顶部渐变的可见性的动画。

我对这个实现的问题是它不“干净”。我希望我的 UIViewControllers 负责处理逻辑,而不是处理应用渐变之类的事情。我希望我可以删除一个 UITableView 的子类来为我做这件事。

我面临的挑战是我无法弄清楚 tableView 如何在可滚动内容之上向自身添加固定内容。

另一个问题是我应该重写 UIScrollView 的什么方法来拦截滚动事件。显然我不希望 tableView 成为它自己的代表......

有什么想法吗?

谢谢!

最佳答案

好的,所以我在 Apple 的 WWDC 2011 session 104 视频 - 高级 ScrollView 技术中找到了解决方案。

该视频中有一整节内容是关于 ScrollView 中的“静态 View ”。根据 Apple 的说法,这里的方法是覆盖 layoutSubviews 并将所有代码放在那里以定位任何你想要的位置 - 无论你想要什么。

我试过了,它实际上非常简单,并且按预期工作。

例如,如果我希望在内容滚动时在表格顶部有一个带阴影的标题,那么我应该编写以下代码:

-(void) layoutSubviews
{
[super layoutSubviews];
[self positionTopShadow];
}

-(void) positionTopShadow
{
CGFloat yOffset = self.contentOffset.y;
// I'm doing some limiting so that the maximum height of the shadow view will be 40 pixels
yOffset = MIN(yOffset, 40);
yOffset = MAX(0, yOffset);

CGRect frame = self.topShadowView.frame;
// The origin should be exactly like the content offset so it would look like
// the shadow is at the top of the table (when it's actually just part of the content)
frame.origin = CGPointMake(0, self.contentOffset.y);
frame.size.height = yOffset;
frame.size.width = self.frame.size.width;
self.topShadowView.frame = frame;

if (self.topShadowView.superview == nil)
{
[self addSubview:self.topShadowView];
}
[self bringSubviewToFront:self.topShadowView];
}

关于iphone - 是否可以向 UIScrollView 添加固定内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9374925/

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