Iphone 画廊上的自动旋转-willAnimateRotation。。。isn';t调用

Iphone 画廊上的自动旋转-willAnimateRotation。。。isn';t调用,iphone,gallery,autoresize,autorotate,Iphone,Gallery,Autoresize,Autorotate,我正在使用 我把这个放在添加图像的地方: self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 我在SlideShowViewController中设置了这些覆盖: - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ retu

我正在使用

我把这个放在添加图像的地方:

self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
我在SlideShowViewController中设置了这些覆盖:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    return YES;
}

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {


}
第一个被调用,但不是第二个

我没有用笔尖;它使用一个自定义init,返回一个包含3个图像的self.view

我错过什么了吗?当用户旋转iPhone时,修改此脚本以使横向照片伸展至全宽的最佳方式是什么

编辑:刚刚尝试添加willAnimate。。。指向我的NavigationController的根视图控制器,但它未被调用。也许是导航控制器出了问题?那样的话,我应该把遗嘱放在哪里。。。?或者,我如何接收发送到可视viewController的消息并将其传递给可视viewController?

编辑2:主题中出现错误的原因是TabBarController缺少IB中的连接(我确信存在)。所以现在我的问题和其他几个类似的问题一样-willAnimate。。。在根VC中调用,但在推送的VCs中不调用。我使用的代码在gallery VC中淡入淡出,而不是滑入,也就是说,它未被推送,但当前作为子视图添加到窗口中,以填充整个显示。


建议如何传达子视图控制器设置帧的信息,或其他解决方案,将不胜感激

是将SlideShowViewController直接推送到导航控制器堆栈上,还是它是其他视图的一部分?在导航控制器堆栈上的视图上使用子视图时,UIView委托方法会有点混乱


如果SlideShowViewController只是推送到导航控制器堆栈上的其他视图的子视图,我会尝试在导航控制器堆栈上的视图控制器中侦听此方法,然后从那里调用SlideShowViewController中的相应方法。

我在获取ViewWillDisplay时遇到了类似的问题,在导航控制器中调用了类似的方法。
我通过在调用根方法时手动调用它们来解决问题。
我不知道旋转是否也是同样的问题,但您可以尝试将根视图控制器放入其中

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [self.navigatioController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}

这不是为什么“willAnimateRotation…”方法不会触发的答案,而是图像库如何适应旋转本身的替代方法

在initWithImages中添加:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(didRotate:)
                                             name:UIDeviceOrientationDidChangeNotification object:nil];
添加此方法以接收通知。在didRotate中,可以处理图像的大小调整和重新定位

- (void) didRotate:(NSNotification *)notification
{   
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

    if (orientation == UIDeviceOrientationLandscapeLeft)
    {
        NSLog(@"Landscape Left!");
    }
}
不要忘记在dealloc中注销通知:

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];

我还可以建议您使用UIScrollView,而不是自己处理滚动和手势吗?

我想这个问题回答起来有点棘手,因为它是关于我特定的非基本应用程序设置的。很抱歉让悬赏时间用完了,我问的那天基本上已经太晚了;)

我想我应该为那些有同样症状的人发布这篇“不埋没在评论中”

第一个是我注意到一个IBOutlet,我确信我在一个点上连接的它不再连接(tabbar Controller->tabbar Controller object)。因为我绞尽脑汁把东西搬来搬去,这可能是因为我尝试了一些东西,然后恢复了备份

解决方案的第二部分是将gallery视图的子视图添加到tabBarController的视图中,而不是导航到的视图。然后根视图控制器的应自动。。。调用了willAuto方法

(要在旋转时隐藏选项卡栏和导航栏,我必须在显示库时将它们的.alpha设置为0,否则返回到导航栏时导航到的视图部分隐藏在导航栏下。在显示库时,我找不到隐藏状态栏的方法。)


在此之后,有人请求从另一个选项卡导航到详细视图中的库,我得到了一个棘手的错误,即只有在另一个选项卡下显示另一个(工作)详细视图时,才会自动旋转新库的工作。我们将及时返回此问题的解决方案。

感谢您的回复!我不知道你说的“倾听”是什么意思,但我在上面加了一句,我把willAnimate。。。在堆栈上的top viewController中。与以前相同的问题-加载该视图时,应自动旋转。。。被调用,但不是willAnimate。你说你把它添加到根视图控制器。这是显示幻灯片视图时导航控制器堆栈上的俯视图控制器?是。不要这样问,一个单词的答案需要我加上绒毛……:)谢谢,但在当时,这对我没什么帮助,因为没有一个会。。。任何地方的方法都被调用。感谢你的建议,没有时间为横向模式设置动画和手势,所以使用狡猾、侦查和一撮逻辑(我注意到一个错误…)我使正常的自动旋转工作。我将此标记为一个答案,因为这是一种滚动(旋转?)的方式,可以说是你自己的。