我在我的应用程序中有一个滚动视图,通过storyboard初始化,并且我正在尝试更改它的框架。一切似乎都可以工作,但是如果在它们被设置后不久但在我的方法返回之后访问框架和内容大小,则它们将不同!下面是代码:
CGFloat inputHeight = inputView.frame.size.height;
originalContentHeight = self.scrollableContentView.frame.size.height;
NSLog(@"%f", self.scrollableContentView.frame.size.height-inputHeight);
[self.scrollableContentView setFrame:CGRectMake(self.scrollableContentView.frame.origin.x, self.scrollableContentView.frame.origin.y, self.scrollableContentView.frame.size.width, self.scrollableContentView.frame.size.height-inputHeight)];
NSLog(@"%f", self.scrollableContentView.frame.size.height);
NSLog(@"%@", self.scrollableContentView);
这些日志的输出都符合预期,即:
<UIScrollView: 0x808de00; frame = (0 0; 320 81); ... >
然而,如果我在另一个方法中设置断点,当该方法被调用时,记录scrollView的输出如下:
<UIScrollView: 0x808de00; frame = (0 0; 320 416); ... >
此外,内容大小也随之改变:
(width=320, height=416)
to
(width=320, height=504)
这两个值似乎会自动恢复为视图首次布局时的值。我在滚动视图的getter和setter中设置了断点,并没有发现任何意外的访问,因此我得出结论该更改必须来自内部。这个结论合理吗?可能出了什么问题?