gpt4 book ai didi

iphone - 动画过渡在横向方向上无法正常工作

转载 作者:太空狗 更新时间:2023-10-30 03:31:18 25 4
gpt4 key购买 nike

我的应用仅支持横向右方向。

我正在尝试转换到 View Controller 的 View ,但是当它执行转换动画(例如 curl )时, View 旋转了 90 度(因此,模拟器仍然处于横向右方向,但是 View 似乎旋转了 90 度)。过渡完成后,它会旋转到正确的方向。我的代码如下。

- (IBAction)buttonTouched
{
MyViewController *aViewController = [[MyViewController alloc] initWithNibName:NSStringFromClass([MyViewController class]) bundle:nil];

[UIView transitionFromView:self.view
toView:aViewController.view
duration:2
options:UIViewAnimationOptionTransitionCurlUp
completion:NULL];
}

看起来好像 View 没有收到“方向已更改”通知,因此它以纵向显示,然后在动画结束后更改为横向。我已经在 IB 中设置了它,所以它都是横向布局的。

编辑:我还尝试将 View Controller 添加到自己的 IB 文件并转换到该 View (认为初始化和转换之间可能太接近了)但同样的事情发生了。

最佳答案

嗯,主要原因是 self.view(目前“知道”您处于横向)正在被一个没有该信息的新 View 所取代。因此,一种想法是将 aViewController.view 作为 self.view 的 subview (假设 aViewController 是不透明的)。啊,你说,但后来我失去了 transitionFromView 的漂亮动画。好吧,试试这个好处:

[UIView transitionWithView:self.view
duration:2
options:UIViewAnimationOptionTransitionCurlUp
animations:^{
[self.view addSubview:aViewController.view];
}
completion:NULL];

如果出于某种原因这对您不起作用,另一种方法是“教导”aViewController.view 它确实是一个横向 View :

#define DEGREES_TO_RADIANS(__ANGLE__) ((__ANGLE__) / 180.0 * M_PI)
-(void)setNewViewToLandscape:(UIView*)viewObject {
//assumes self.view is landscape and viewObject is portrait
[viewObject setCenter:CGPointMake( self.view.frame.size.width/2,self.view.frame.size.height/2)];
CGAffineTransform cgCTM = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(90));
viewObject.transform = cgCTM;
viewObject.bounds = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height);
}

MyViewController *aViewController = [[MyViewController alloc] initWithNibName:NSStringFromClass([MyViewController class]) bundle:nil];
[self setNewViewToLandscape:aViewController.view];

[UIView transitionFromView:self.view
toView:aViewController.view
duration:2
options:UIViewAnimationOptionTransitionCurlUp
completion:NULL];

还有一点是您的 aViewController 正在泄漏,因此您应该将其作为父 viewController 的保留属性。

关于iphone - 动画过渡在横向方向上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4707606/

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