gpt4 book ai didi

iphone - 旋转 UIView 时覆盖 layoutSubviews

转载 作者:搜寻专家 更新时间:2023-10-30 20:04:22 24 4
gpt4 key购买 nike

在 UIView 内旋转 ScrollView 时, ScrollView 无法使用其默认的自动调整大小行为正确定位。

因此,当发生旋转时,在 willRotateToInterfaceOrientation 中调用 [self.view setNeedsLayout]; 并且我的 layoutSubviews 方法如下:

- (void)layoutSubviews {
NSLog(@"here in layoutSubviews");
}

但是在方法上打了个断点,好像一直没有进入方法。

我需要做其他事情才能让它工作吗?

谢谢。

最佳答案

willRotateToInterfaceOrientation 在方向改变之前被调用,因此您的 UIView 仍将具有旧尺寸。尝试改用 didRotateFromInterfaceOrientation。

此外,为了增加效果,我会在 willRotateToInterfaceOrientation 中隐藏 ScrollView (可能在 UIAnimation block 内),调整它的大小,然后在 didRotateFromInterfaceOrientation 中显示它(同样,可能在动画 block 内)。

这是我的一个应用程序的片段:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3f];
self.myScroll.hidden = YES;
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[UIView commitAnimations];
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3f];
self.myScroll.hidden = NO;
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[UIView commitAnimations];
}

您甚至可以通过使用 UIInterfaceOrientationIsPortrait(orientation) 或 UIInterfaceOrientationIsLandscape(orientation) 检查新方向来做一些奇特的事情。

关于iphone - 旋转 UIView 时覆盖 layoutSubviews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4051465/

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