gpt4 book ai didi

ios - 如何在 viewWillAppear 中将 UIScrollView 滚动到底部,当使用自动布局时,没有视觉动画

转载 作者:可可西里 更新时间:2023-11-01 04:29:32 25 4
gpt4 key购买 nike

问题是:

我在 UIScrollView 中放入了一堆 View 。这些 subview 的大小和位置由约束定义。这非常有效,滚动也有效。到目前为止一切顺利。

但是,当我第一次在屏幕上显示 View Controller 时,我希望我的 ScrollView 一直滚动到底部,这就是麻烦开始的地方。为了知道底部在哪里,我需要知道 subview 中最低元素的位置和大小。应该也很容易(因为我在某处引用了那个 UIView):获取 UIView 的框架,瞧。

我想在 scrollview 出现在屏幕上之前将它滚动到底部(所以基本上,在 viewWillAppear: 中),但是约束只在 viewWillAppear 之后和之前进行评估viewDidAppear: 被调用。

viewWillAppear 中获取 UIView 框架给我一个零大小的 CGRect。在 viewDidAppear 中执行相同的操作会得到正确的 CGRect。但是 viewDidAppear 对我来说为时已晚,因为 ScrollView 已经在屏幕上,所以您会看到内容向上移动。

有人对此有好的解决方案吗?我尝试将代码放在 viewDidLayoutSubviews 中,但这也不起作用。

最佳答案

viewWillAppear 的问题在于它在布局发生之前被调用。您必须在布局后调整 ScrollView 的内容偏移量 - 在 viewDidLayoutSubviews 方法中。这是我的解决方案:

@property (nonatomic, assign) BOOL shouldScrollToBottom;


- (void)viewDidLoad
{
[super viewDidLoad];

_shouldScrollToBottom = YES;
}


- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];

// Scroll table view to the last row
if (_shouldScrollToBottom)
{
_shouldScrollToBottom = NO;
[_scrollView setContentOffset:CGPointMake(0, CGFLOAT_MAX)];
}
}

关于ios - 如何在 viewWillAppear 中将 UIScrollView 滚动到底部,当使用自动布局时,没有视觉动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24899145/

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