我在调试为什么我的 scrollView
不滚动时遇到了这个问题。对于上下文,我的布局结构是:
-ScrollView
- View
- labels, images, buttons
更新 scrollView.contentSize
以匹配(子) View 不起作用,所以我放入了一些调试语句。事实证明,当我 NSLog
其描述时, View 的框架大小为 0、0,但如果我运行调试器的 recursiveDescription
,它会显示不同。
知道为什么吗,这会影响我的滚动不起作用的原因吗?
来自NSLog(@"%@", [self.view description])
2012-11-15 17:16:46.707 Comparo[65731:11303] starting: <UIView: 0x7144590; frame = (0 0; 0 0); autoresize = TM+BM; layer = <CALayer: 0x714b4f0>>
2012-11-15 17:16:46.708 Comparo[65731:11303] 1: <UIView: 0x7144590; frame = (0 0; 0 0); autoresize = TM+BM; layer = <CALayer: 0x714b4f0>>
2012-11-15 17:16:46.771 Comparo[65731:11303] 2: <UIView: 0x7144590; frame = (0 0; 0 0); autoresize = TM+BM; layer = <CALayer: 0x714b4f0>>
2012-11-15 17:16:46.771 Comparo[65731:11303] 3: <UIView: 0x7144590; frame = (0 0; 0 0); autoresize = TM+BM; layer = <CALayer: 0x714b4f0>>
2012-11-15 17:16:46.772 Comparo[65731:11303] 4: <UIView: 0x7144590; frame = (0 0; 0 0); autoresize = TM+BM; layer = <CALayer: 0x714b4f0>>
调试器输出:(lldb) po [[UIApp keyWindow] recursiveDescription]
...
| | | | <UIScrollView: 0x71494d0; frame = (0 0; 320 504); clipsToBounds = YES; autoresize = TM+BM; gestureRecognizers = <NSArray: 0x75d3bb0>; layer = <CALayer: 0x71f9ed0>; contentOffset: {0, 0}>
| | | | | <UIView: 0x7144590; frame = (0 0; 320 523); autoresize = TM+BM; layer = <CALayer: 0x714b4f0>>
谢谢。
最佳答案
谢谢罗布!
您说的是时间问题是对的,并且无法保证帧将在 viewDidLoad(我有 NSLog 语句)中完成。我将语句移到了 viewDidAppear:,这是用户首先能够与它们交互并无论如何滚动的地方,现在数字匹配了。
奖励:也解决了我的滚动问题。
关于iOS - UIView 描述框架与调试器递归描述框架不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13407754/