【发布时间】:2018-07-03 20:27:42
【问题描述】:
我正在为 iPhone 和 iPad 使用 Objective-C 进行开发,目前在 iOS11 并且没有使用 Interface Builder。
我正在使用 viewWillTransitionToSize 来处理我的设备旋转。
我希望在旋转开始时呈现的 UI 淡出为黑色,并且当新旋转的 UI 稳定时,我希望新 UI 淡入。总淡出/淡入转换时间约为 1/2 秒。
我已经看到关于过渡可以与 viewWillTransitionToSize 集成的讨论,但我还没有看到示例,我正在努力解决如何做我想做的事情。
我编写了以下代码,使旋转过渡更加平滑。但距离我想要实现的目标还有很长的路要走:
- (void) viewWillTransitionToSize: (CGSize) size
withTransitionCoordinator: (id) cord
{
[super viewWillTransitionToSize: size withTransitionCoordinator: cord];
void (^midRotationBlk)(id) = ^(id cntx)
{
[gU updDevDirOrient: size];
[self calcScrnCntAndScrollSize]; // recalculates horz scroll size
[self updateViewConstraints];
[[[self view] layer] addAnimation: [gU getTransitionEaseInOut: 0.5f]
forKey: nil];
};
void (^endRotationBlk)(id) = ^(id cntx)
{
[self doScrollToPage: [self prevScrollPage]];
};
[cord animateAlongsideTransition: midRotationBlk
completion: endRotationBlk];
}
getTransitionEaseInOut 的调用如下所示:
- (CATransition *) getTransitionEaseInOut: (float) secs;
{
CATransition * transition = [CATransition animation];
[transition setDuration: secs];
[transition setTimingFunction: [CAMediaTimingFunction
functionWithName: kCAMediaTimingFunctionEaseInEaseOut]];
[transition setType: kCATransitionFade];
return( transition );
}
我已经尝试过在 viewWillTransitionToSize 例程中调用 addAnimation 的位置,但我尝试过的所有位置都没有真正有帮助。我觉得我做错了。
【问题讨论】:
标签: ios core-animation screen-rotation