gpt4 book ai didi

ios - 有没有更好的方法来获取内容大小

转载 作者:行者123 更新时间:2023-11-29 12:55:11 25 4
gpt4 key购买 nike

所以这是我的问题,我有一个 ScrollView 包含一些 subview 和一些与布局相关的动态内容。我想设置 ScrollView 的内容大小正好是 subview 大小的总和。

简而言之,rootview->scrollview->一些具有动态内容的 subview (假设是多行 UILabel)

这就是我所做的:

根据viewDidLayoutSubviews中的文档,调用该方法并不表示 View 的 subview 的个别布局已经调整。每个 subview 负责调整自己的布局。

所以当这个方法发生时我的 UILabel 没有布局。

然后在viewdidappear中我设置了contentSize,但是一个新的问题是当我们切换到横向时这个问题没有激活,所以我在viewDidLayoutSubview和viewdidappear中都做了设置。

我的问题是1.有更好的方法吗?2. Root View 的 subview 完成 subview 布局的确切时刻在哪里,如何进入它?(子类似乎有点重)

我在 ios7 中使用自动布局和约束,我已经尝试在 viewwilllayoutsubviews 中设置 setviewNeedLayout 和 layoutifneeded,但没有用。

并且将layoutifneeded放在viewdidlayoutsubviews中会在切换方向时崩溃

这里是一些代码:

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self adjustScrollViewContentSize];
}

- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
[self adjustScrollViewContentSize];
}

- (void)adjustScrollViewContentSize
{
UIView *bottomUIView = [self getBottomUIView];
CGRect superRect = [bottomUIView convertRect:bottomUIView.bounds toView:self.scrollView];
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width, superRect.origin.y + superRect.size.height);
}

最佳答案

使用 AutoLayout,您应该能够添加约束,这样您就不需要手动更新 contentSize - scrollView 会根据其内容的大小自行调整。

关键是要确保你有内部约束,将内部 subview 附加到 ScrollView 的所有 4 个内部边缘。例如,使用视觉格式语言:

  • 水平:|[myLabel]|
  • 垂直:V:|[myLabel]-[someOtherLabel]|

本质上,只要您有明确的约束通过 subview 将左边缘附加到右边缘(从上到下也是如此), ScrollView 就会从中推断出它的 contentSize。

关于ios - 有没有更好的方法来获取内容大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21350295/

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