【问题标题】:UIScrollview scrolls vertically despite correct contentSize尽管 contentSize 正确,UIScrollview 仍会垂直滚动
【发布时间】:2014-11-02 16:12:53
【问题描述】:

我在 UIScrollView 中有一个 UIView。 UIScrollView 有以下约束:

-Top space to superview equals 0
-Leading space to superview equals 0
-Width equals 320.0f
-Height equals 45.0

UIView 有以下约束:

-Top space to superview equals 0
-Bottom space to superview equals 0
-Leading space to superview equals 0
-Trailing space to superview equals 0
-Width equals 320.0
-Height equals 45.0

据我所知,这应该会禁用所有滚动。但是,我仍然可以垂直滚动到最大偏移量 49.0。所有尺寸似乎都是正确的:

(lldb) po scrollView.contentSize
(width=420, height=45)
 {
  320

  45

}
(lldb) po scrollView
<UIScrollView: 0x10c332980; frame = (0 0; 320 45); clipsToBounds = YES; autoresize = RM+TM; gestureRecognizers = <NSArray: 0x10c333b80>; layer = <CALayer: 0x10c32c530>; contentOffset: {0, 49}>
(lldb) po contentView
<UIView: 0x10c332400; frame = (0 0; 320 45); autoresize = W+H; layer = <CALayer: 0x10c3324c0>>

但是 UIScrollView 仍然能够垂直滚动。有人知道这怎么可能吗?

编辑:

新信息:问题仅出现在 iOS 7.1,而不是 iOS 6.1

【问题讨论】:

    标签: ios objective-c iphone uiview uiscrollview


    【解决方案1】:

    最终我发现滚动视图的底部内容插入不是 0 而是 49。目前还不清楚它是如何获得一个值的,因为它没有在布局编辑器中设置,但我能够禁用垂直滚动如下:

    [scrollView setContentInset:UIEdgeInsetsZero];
    

    【讨论】:

      【解决方案2】:

      UIView需要通过调用以下方法关闭自动调整大小

      [uiview setTranslatesAutoresizingMaskIntoConstraints];

      【讨论】:

      • 还是不行。另外,如果这是问题所在,我希望 contentSize 不正确,但它似乎是正确的。
      猜你喜欢
      • 2012-02-11
      • 2015-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多