iOS 关于UITableView动态滚动的问题

2013-07-24 15:24:03 +08:00
 wangjordy
我现在有一个需求是,当UITableView滚动时,需要动态改变它的显示区域的大小,

当滚动时,如果动态设置UITableView的frame, Cell中的图片会被拉伸。
如果设置UITableView的frame固定,通过设置setContentInset和setScrollIndicatorInsets属性,初始加载没有问题,
但是显示出来UITableView后, 就会像(http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/UIScrollView_pg/CreatingBasicScrollViews/CreatingBasicScrollViews.html)中最下边的截图一样,滚动的内容会被遮挡,

并且设置setContentOffset坐标任然会被遮挡。

有没有大神帮我小弟解决一下。
7165 次点击
所在节点    iDev
12 条回复
alexrezit
2013-07-24 15:33:16 +08:00
没懂什么意思, 不过难道滚动不是应该用 -scrollRectToVisible: 么? 为什么用 -setContentOffset: 呢?

而且设置 frame 不会改变 cell 吧? table view 和 cell 本来就是两个不相干的东西啊...
wangjordy
2013-07-24 16:17:47 +08:00
@alexrezit 是这样,我刚刚写了一个demo, 地址:https://github.com/wangjordy/UITableViewDemo
麻烦您下载看一下, 运行程序,然后点击“隐藏二级菜单”,然后再次点击这个按钮(“显示二级菜单”), 这个时候会看到二级菜单已经遮挡了下边的UITableView, 即使我在设置setContentOffset还是没有效果的,依然会被遮挡。
麻烦你找找我的问题所在,不胜感激。
txx
2013-07-24 16:25:07 +08:00
我不知道该怎么说 但是我不会这么实现这个效果.....

你的实现方式太奇怪了...
wangjordy
2013-07-24 16:36:56 +08:00
@txx 如果你有好的实现方式,也不妨说说
wupher
2013-07-24 16:43:07 +08:00
你想实现的效果是那个mask view显示或者隐藏的时候,下方的scrollView(TableView)随之滚动,保证不被遮住?
wangjordy
2013-07-24 17:23:50 +08:00
@wupher 对,刚刚已经知道怎么做了。 谢谢大家支持!
wangjordy
2013-07-24 17:34:48 +08:00
我这里把做法说一下,最后解决的方式是可以动态改变UITableView的frame,只需要修改xib中,设置frame的地方,将<-->和上下箭头这两个横线去掉就行。 默认有这两条线,UITableView里的内容是会被拉伸。
alexrezit
2013-07-24 17:44:54 +08:00
@wangjordy
你的实现方式太奇葩了... 上面的 "一级菜单" 按钮应该是一个 header view 才对.
wupher
2013-07-24 18:59:06 +08:00
是的,使用headerView会更容易实现。另外,如果数据量少的情况下,使用MGBox这样的UITableView替代方案也会很容易。
so898
2013-07-24 19:20:55 +08:00
虽然让我来做估计会和楼主采用一样的方法……
不过某些时候(视心情而定),我会在上面套一个UIView来控制UITableview的显示区域,然后通过调整Footer的高度来实现列表显示……
wangjordy
2013-07-25 09:36:50 +08:00
@alexrezit 不是,这是需求,它要求在向上滚动的时候要隐藏一级和2级菜单, 向下滚动的时候要显示一级菜单, 我知道headerview的实现方式,所以用headerview显然是满足不了需求的, 因为跟我之前最上边问的问题无关,所以也没多介绍这块。
zhigang1992
2013-07-28 20:32:19 +08:00
你的做法是对的,调整contentInset的时候一切没有问题,但是你想拖下来看效果的时候,`scrollViewDidScroll`被调用了。。。然后你懂的`showMenuViewAnimation`又来了

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

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

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

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

© 2021 V2EX