gpt4 book ai didi

ios - 向下滚动后更改节标题 View

转载 作者:可可西里 更新时间:2023-11-01 05:54:48 24 4
gpt4 key购买 nike

我想在用户向下滚动时修改部分标题 View ,类似于音乐应用中的内容(注意 View 背景颜色如何更改并获得底部边框)

screen shots

是否有一种好的方法来跟踪 View 何时位于部分顶部或处于滚动位置?

更新:

到目前为止,我唯一的解决方案是保留所有部分标题 View 的数组,并更改 scrollViewDidScroll: 委托(delegate)方法中第一个可见部分的 View (使用 tableView.indexPathsForVisibleRows 数组获取第一个可见部分索引)

如果有人能想出更简单的方法,那就太好了!

最佳答案

您可以在 scrollViewDidScroll 方法中修改节标题 View 的颜色(以及任何您想要的颜色)。此示例在用户向下滚动时使 float 标题 View 的颜色变暗,并将该颜色的白色值保持在 0.9 和 0.6 之间。如果您向下滚动超过 5 点,它还会取消隐藏标题 View 中的底部边框线。

RDHeaderView 的 .m 文件:

- (id)init{
self = [super init];
if (self) {
UIView *line = [[UIView alloc] init];
[line setTranslatesAutoresizingMaskIntoConstraints:NO];
line.backgroundColor = [UIColor darkGrayColor];
[self addSubview:line];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[line]|" options:0 metrics:nil views:@{@"line":line}]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[line]|" options:0 metrics:nil views:@{@"line":line}]];
[line addConstraint:[NSLayoutConstraint constraintWithItem:line attribute:NSLayoutAttributeHeight relatedBy:0 toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:1]];
self.bottomLine = line;
self.bottomLine.hidden = YES;
}
return self;
}

表格 View Controller 中的相关方法:

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
RDHeaderView *header = [[RDHeaderView alloc] init];
header.contentView.backgroundColor = [UIColor colorWithWhite:0.9 alpha:1];
return header;
}


-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSInteger topSection = [[self.tableView indexPathsForVisibleRows].firstObject section];
NSInteger sectionYOffset = [self.tableView rectForHeaderInSection:topSection].origin.y;
RDHeaderView *pinnedHeader = (RDHeaderView *)[self.tableView headerViewForSection:topSection];
pinnedHeader.bottomLine.hidden = ((scrollView.contentOffset.y - sectionYOffset) > 5)? NO: YES;
CGFloat colorOffset = fmaxf(0.6, 0.9 - (scrollView.contentOffset.y - sectionYOffset)/1000.0);
if (colorOffset > 0.9) colorOffset = 0.9;
pinnedHeader.contentView.backgroundColor = [UIColor colorWithWhite:colorOffset alpha:1];
}


-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 80;
}

关于ios - 向下滚动后更改节标题 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20583395/

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