gpt4 book ai didi

iphone - 如何为 iPhone SDK 应用程序实现 Accordion View ?

转载 作者:太空狗 更新时间:2023-10-30 03:19:38 24 4
gpt4 key购买 nike

有没有人见过 iPhone 的“ Accordion ”(可能称为“动画轮廓”) View 的实现?我找到了 Cocoa 的示例项目,但在尝试移植之前,我希望有人已经发明了轮子。

为了清楚起见,在 UIView 中,考虑一堆部分,每个部分包含一个标题,然后是一些内容。当用户触摸标题(或通过某些消息/事件)时,如果该部分已经打开 => 关闭它;如果该部分已关闭 => 打开它并关闭任何其他打开的部分。 jQuery 中的一个示例如下所示: http://docs.jquery.com/UI/Accordion

在我的例子中,我希望能够在每个部分中放置任何 UIView 内容。

我有兴趣看到一些已经实现了这个的真实应用程序 - 只是为了知道这是可能的!

最佳答案

我只想使用 UITableView,让每个单元格的高度取决于它是否“打开”,然后从那里开始。调整行的大小很容易,您只需将组合单元格的总高度设置为 UITableView 中的可用高度,这样它看起来更像一个 Accordion ,而不仅仅是一个表格。

这是一个应该可行的快速 hack,但在您的 UITableViewController 子类的 .h 文件中:

bool sectionopen[4]; ///or some other way of storing the sections expanded/closed state

然后在 .m 文件中放入如下内容:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 4;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (sectionopen[indexPath.row]) {
return 240;///it's open
} else {
return 45;///it's closed
}

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *mycell = [[[UITableViewCell alloc] init] autorelease];
mycell.textLabel.text= @"Section Name";
return mycell;
}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
///turn them all off
sectionopen[0]=NO;
sectionopen[1]=NO;
sectionopen[2]=NO;
sectionopen[3]=NO;

///open this one
sectionopen[indexPath.row]=YES;

///animate the opening and expand the row
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
}

这基本上需要 4 行并将它们变成可折叠的部分,其中选择一行会将其展开为 240 像素并将所有其他行折叠为 40。您可以更改所有这些数字并找出这些部分并执行任何其他操作喜欢它。

我试过了,效果不错。然后,您可以通过将其他内容添加到您的单元格创建代码来完成它,以将您想要的任何内容添加到一个部分(如果您愿意,可能包括一个滚动的 UITextView)。

关于iphone - 如何为 iPhone SDK 应用程序实现 Accordion View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1944428/

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