gpt4 book ai didi

ios - 如何为具有不透明主体的 UITableView header 设置清晰的背景

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

如何使 tableHeaderView 的背景清晰,但保持 UITableView 背景的其余部分不透明

我正在使用透明的 tableHeaderView 来实现视差效果。 tableView 后面的对象比清晰的 tableHeaderView“窗口”更长,因此我可以将可见数据居中。这适用于较长的列表,因为我可以将 tableView 用作掩码,但当我在表格中没有足够的单元格时,背景对象会显示在单元格下方。

相关代码:

self.tableView.backgroundView = nil;
self.tableView.backgroundColor = [UIColor whiteColor];

UIView *tableHeaderView = [[UIView alloc] initWithFrame: CGRectMake(0.0, 0.0, 320.0, 250.0)];
tableHeaderView.backgroundColor = [UIColor clearColor];
self.tableView.tableHeaderView = tableHeaderView;

我已经尝试为 tableView 设置背景颜色,但这会使整个 UITableView 不透明(包括 tableHeaderView),移除我在顶部的“窗口”。

关于如何在将 UITableView 的主体设置为不透明的同时保持透明 tableHeaderView 的任何想法?

谢谢!

最佳答案

几天后我就弄明白了。解决方案的前提是在表格的 backgroundView 中添加一个 subview 并在滚动时更改 subview 的 frame。

viewDidLoad中的相关代码:

...
// Create the UIView that will become the tableView backgroundView
UIView *tableViewBackground = [[UIView alloc] initWithFrame:self.tableView.frame];
tableViewBackground.backgroundColor = [UIColor clearColor];

// Create the opaque backgroundView and set the frame so that it starts below the headerView
partialBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 250, 320.0, self.view.frame.size.height)];
partialBackgroundView.backgroundColor = [UIColor redColor];

// Add the partial background to the main background view and apply it to the tableView
[tableViewBackground addSubview:solidTableBodyBackgroundView];
self.tableView.backgroundView = tableViewBackground;
...

然后当你滚动时,你可以更新 scrollViewDidScroll 中的“可见窗口”:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat scrollOffset = scrollView.contentOffset.y;
partialBackgroundView.frame = CGRectMake(0, 250 - scrollOffset, 320, self.view.frame.size.height);
// Other parallax code for scrolling
}

可能有更好的方法来做到这一点,但我发现这很简单而且效果很好。

关于ios - 如何为具有不透明主体的 UITableView header 设置清晰的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20154274/

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