gpt4 book ai didi

iphone - iOS - 方向变化 - 光学错觉或元素移动?

转载 作者:行者123 更新时间:2023-11-28 22:53:01 25 4
gpt4 key购买 nike

当我转动方向时,我想知道 iOS 中的动态动画。例如。在我的 iPad 上,菜单中的动画看起来非常“真实”。元素(应用程序、文件夹、停靠栏、背景图像、状态栏……)似乎以完美的美学方式滑动到正确的位置……
但在 App Store 中,我发现了一个偏差,因为应用列表有另一种排列方式。
我的大问题:orientationChangeAnimation 到底是一种视觉错觉,还是真的如此动态?在 App Store 中,看起来实际屏幕正在转动,同时它的 alpha 值正在减小,并且更改后的屏幕的横向/纵向方向正在做同样的反转(随着 alpha 值的增加在相同的轴心转动)。

最佳答案

事实上,Springboard 确实会四处移动东西(比如停靠栏),它还会交叉淡入淡出项目(比如大多数应用程序图标)。

由于 viewWillLayoutSubviewswillRotateToInterfaceOrientation 在旋转期间在动画 block 内被调用,您可以简单地为可动画属性(如 alpha 和 frame)分配新值。除非你想明确控制时间,否则不需要明确的 animateWithDuration:animations:calls; iOS 会在旋转期间自动为您制作动画。

例如,在以下代码中,红色和绿色方 block 在屏幕中央交叉淡入淡出,蓝色方 block 在旋转过程中在左上角和中上角之间移动。

CGRect b = self.view.bounds;
self.greenLabel = [[UILabel alloc] initWithFrame:CGRectMake(b.size.width / 2 - 50, b.size.height / 2 - 50, 100, 100)];
self.greenLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
self.greenLabel.backgroundColor = [UIColor greenColor];
[self.view addSubview:self.greenLabel];

self.redLabel = [[UILabel alloc] initWithFrame:self.greenLabel.frame];
self.redLabel.autoresizingMask = self.greenLabel.autoresizingMask;
self.redLabel.backgroundColor = [UIColor redColor];
[self.view addSubview:self.redLabel];

self.blueLabel = [[UILabel alloc] init];
self.blueLabel.backgroundColor = [UIColor blueColor];
[self.view addSubview:self.blueLabel];

...

- (void)viewWillLayoutSubviews {
if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) {
self.greenLabel.alpha = 0;
self.redLabel.alpha = 1;
self.blueLabel.frame = CGRectMake((self.view.bounds.size.width - 100) / 2, 20, 100, 100);
} else {
self.greenLabel.alpha = 1;
self.redLabel.alpha = 0;
self.blueLabel.frame = CGRectMake(20, 20, 100, 100);
}
}

关于iphone - iOS - 方向变化 - 光学错觉或元素移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11467967/

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