V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
wangjordy
V2EX  ›  iDev

iOS 关于UITableView动态滚动的问题

  •  
  •   wangjordy · 2013-07-24 15:24:03 +08:00 · 7229 次点击
    这是一个创建于 4144 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我现在有一个需求是,当UITableView滚动时,需要动态改变它的显示区域的大小,

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

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

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

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

    你的实现方式太奇怪了...
    wangjordy
        4
    wangjordy  
    OP
       2013-07-24 16:36:56 +08:00
    @txx 如果你有好的实现方式,也不妨说说
    wupher
        5
    wupher  
       2013-07-24 16:43:07 +08:00
    你想实现的效果是那个mask view显示或者隐藏的时候,下方的scrollView(TableView)随之滚动,保证不被遮住?
    wangjordy
        6
    wangjordy  
    OP
       2013-07-24 17:23:50 +08:00
    @wupher 对,刚刚已经知道怎么做了。 谢谢大家支持!
    wangjordy
        7
    wangjordy  
    OP
       2013-07-24 17:34:48 +08:00
    我这里把做法说一下,最后解决的方式是可以动态改变UITableView的frame,只需要修改xib中,设置frame的地方,将<-->和上下箭头这两个横线去掉就行。 默认有这两条线,UITableView里的内容是会被拉伸。
    alexrezit
        8
    alexrezit  
       2013-07-24 17:44:54 +08:00
    @wangjordy
    你的实现方式太奇葩了... 上面的 "一级菜单" 按钮应该是一个 header view 才对.
    wupher
        9
    wupher  
       2013-07-24 18:59:06 +08:00
    是的,使用headerView会更容易实现。另外,如果数据量少的情况下,使用MGBox这样的UITableView替代方案也会很容易。
    so898
        10
    so898  
       2013-07-24 19:20:55 +08:00
    虽然让我来做估计会和楼主采用一样的方法……
    不过某些时候(视心情而定),我会在上面套一个UIView来控制UITableview的显示区域,然后通过调整Footer的高度来实现列表显示……
    wangjordy
        11
    wangjordy  
    OP
       2013-07-25 09:36:50 +08:00
    @alexrezit 不是,这是需求,它要求在向上滚动的时候要隐藏一级和2级菜单, 向下滚动的时候要显示一级菜单, 我知道headerview的实现方式,所以用headerview显然是满足不了需求的, 因为跟我之前最上边问的问题无关,所以也没多介绍这块。
    zhigang1992
        12
    zhigang1992  
       2013-07-28 20:32:19 +08:00
    你的做法是对的,调整contentInset的时候一切没有问题,但是你想拖下来看效果的时候,`scrollViewDidScroll`被调用了。。。然后你懂的`showMenuViewAnimation`又来了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5224 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 09:37 · PVG 17:37 · LAX 01:37 · JFK 04:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.