UITableView 启用分页模式的时候怎样设置才能同时显示上一个 cell 的尾巴和下一个 cell 的脑门?

2011-11-07 13:30:12 +08:00
 lex
<code>-------------------------  ...
|  |_______________|  |   |
|   _______________  |   |
|  | |  |
|  | | | 4
|  | 560x420 | | 8
|  | | | 0
|  | | |
|  |_______________| | |
|   ________________  | |
|____|_______________|___| ...</code>


不知道我有没有说清楚,大概的布局如上图所示,而且滚动结束后要保持相同的布局。
我首先想到的是改 Content Insets 属性,但是没法达到要求。
4804 次点击
所在节点    iDev
9 条回复
lex
2011-11-07 13:35:50 +08:00
-----------------------
|XXX|_______________|XXX|
|XXX _______________ XXX|
|XXX|///////////////|XXX|
|XXX|///////////////|XXX|
|XXX|////560x420////|XXX|
|XXX|///////////////|XXX|
|XXX|///////////////|XXX|
|XXX|_______________|XXX|
|XXX _______________ XXX|
|___|_______________|___|
lex
2011-11-07 13:39:27 +08:00
不好意思,不知道怎么发等宽字体的贴子,后还是截图吧。
http://cl.ly/0k0L323b0N2v1Y1Z2r10
mr_pppoe
2011-11-07 17:33:01 +08:00
看不到图。是不是指scroll停下来的时候,头尾的cell都只显式一半?
remus
2011-11-07 17:46:22 +08:00
lz说的是像海豚浏览器的标签效果吗?
lex
2011-11-07 18:31:13 +08:00
@mr_pppoe 对的,中间的 cell 完整显示,头尾的 cell 只显示一半。
mr_pppoe
2011-11-08 09:59:29 +08:00
@lex paging是指scroll总是停留在scrollView frame size的整数倍的位置上。
所以应该可以:
1. 把所有的cell的frame上移”cell高度的一半“
或者
2. 把第一个cell的高度改成现在”cell高度的一半“

前提是所有cell等高
lex
2011-11-08 11:11:38 +08:00
早上试了一下,两个做法都不行。
其实最后要实现的效果是使每次滚动的幅度不是 scrollView frame size 的整数倍,滚动到第 N 页时:
tableView.contentOffset.y 应该等于 tableView.rowHeight * (N - 1) - (tableView.bounds.size.height - tableView.rowHeight) / 2
lex
2011-11-08 11:15:53 +08:00
网上找到一个滚动效果不太理想的,kPhotoOffsetY 是 (tableView.bounds.size.height - tableView.rowHeight) / 2


- (void)scrollViewDidEndDecelerating:(UITableView *)tableView {
int tomove = ((int)tableView.contentOffset.y%(int)tableView.rowHeight);
if(tomove < tableView.rowHeight/2) [tableView setContentOffset:CGPointMake(0, tableView.contentOffset.y-tomove- kPageOffsetY) animated:YES];
else [tableView setContentOffset:CGPointMake(0, tableView.contentOffset.y+(tableView.rowHeight-tomove)- kPageOffsetY) animated:YES];
}
lex
2011-11-12 15:54:36 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/20929

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX