我在Interface Builder中有一个UIViewController
,我向UIScrollView
添加了UIView
。它的contentOffset
属性等于0.0,但当我将UIScrollView
滚动到最底部并推送另一个视图时,contentOffset
会发生变化。
NSLog
为我提供了以下值:
//View just loaded
2013-09-09 16:19:27.455 my_app[24588:907] Scroll View content offset is 0.000000
//We came back from another view
2013-09-09 16:19:30.957 my_app[24588:907] Scroll View content offset is 108.000000
这种行为的原因是什么?我刚刚在IB中添加了UIScrollView
并且根本没有在代码中做任何事情。
scrollView的contentHeight
大于self.view.height
。滚动视图的frame
保持不变。
答案 0 :(得分:12)
对于iOS 7/8 self.automaticallyAdjustsScrollViewInsets = NO;
解决了问题。
答案 1 :(得分:9)
答案 2 :(得分:3)
我遇到了类似的问题,在解除了一个viewController后,我的tableView中的contentOffset被改为(0,-64)。
我的解决方案有点奇怪,我尝试了所有其他答案,但没有成功, 解决我的问题的唯一方法是切换.xib
的控件树中的tableView位置它是父视图中的第一个控件,如下所示:
我在ImageView之后移动了tableView,它运行起来了:
似乎将表格视图放在第一个位置会导致麻烦,并将表格视图移动到另一个位置可以解决问题。
Pd积。我没有使用autoLayout和故事板
希望这可以帮助别人!答案 3 :(得分:3)
当您离开滚动视图所在的屏幕并返回时,它将在屏幕顶部或左侧或两者上添加一半大小的屏幕。一个空白区域,你不想要的东西。在我的情况下,分页变得混乱并且无法正常工作,直到我以编程方式或通过触摸将滚动放在CGPointZero中作为用户。如果您在NSLog( @"%f", scrollview.contentSize.height );
上致电viewDidLayoutSubviews
,您会发现尺寸已发生变化。
它发生在偏移值不为零的轴上。因此,要解决它,您应该在它出现之前将其设置为零{<1}}。
CGPointZero
答案解决了我的问题,除非我打开一个视图控制器作为弹出窗口(@Steph Sharp
)。我试图通过在presentViewController
上添加错误数量来补偿该值,但它会破坏分页。
简短的回答,我最终得到了:
viewDidLayoutSubviews
现在,当我离开该部分或打开上面的弹出窗口时它会起作用。
答案 4 :(得分:0)
我在UITableView上使用https://github.com/michaeltyson/TPKeyboardAvoiding。
我的解决方案是从UITableView中删除类 TPKeyboardAvoidingTableView 。它导致TableViewController上的滚动问题与静态和动态单元格。
答案 5 :(得分:0)
检查您的滚动视图的contentSize
属性是否为CGSizeZero
。我有一个类似的问题,因为contentSize
没有设置。