gpt4 book ai didi

iphone - UIScrollView 神秘地改变框架和内容大小

转载 作者:可可西里 更新时间:2023-11-01 04:35:38 24 4
gpt4 key购买 nike

我的应用程序中有一个 ScrollView ,它是通过 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)

(width=320, height=504)

这两个值似乎都自动恢复到 View 首次布局时的值。我在我的 ScrollView 的getter和setter中设置了断点,并没有发现任何意外的访问,所以我断定变化必须来自内部。这是一个合理的结论吗?可能出了什么问题?

最佳答案

如果您使用自动布局,您应该更改约束,而不是设置 ScrollView 的框架。

请参阅我对类似问题的回答 here .它有一些指向如何以编程方式设置约束的示例的链接。

此外,您在哪种方法中设置了framecontentSize?由于您使用的是 Storyboard,如果它在 viewDidLoadviewWillAppear: 中,最好将此代码移至 viewDidLayoutSubviews

关于iphone - UIScrollView 神秘地改变框架和内容大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17667662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com