2

我正在使用这个

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

self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

我已经将这些覆盖放在 SlideShowViewController 中:

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

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


}

第一个被称为,但不是第二个。

我没有使用笔尖;它使用一个自定义初始化,它返回一个带有 3 个图像的 self.view。

我错过了什么吗?当用户旋转 iPhone 时,修改此脚本以使风景照片拉伸到全宽的最佳方法是什么?

编辑:刚刚尝试将 willAnimate... 添加到我的 NavigationController 的根视图控制器中,但它没有被调用。也许 NavigationController 是问题所在?在那种情况下,我应该把 willAnimate... 放在哪里?或者,我如何接收发送给它的消息并将其传递给可见的 viewController?

编辑 2:主题错误的原因是 TabBarController 缺少 IB 中的连接(我确定它在那里)。所以现在我的问题与其他一些类似的问题相同 - willAnimate... 在根 VC 中调用,但在推送的 VC 中没有调用。我使用的代码在画廊 VC 中淡出,而不是滑入,即。它没有被推送,但当前作为子视图添加到窗口 - 以填充整个显示。

关于如何向该子视图的控制器发送消息以设置框架的建议或替代解决方案将不胜感激!

4

4 回答 4

1

这不是为什么您的“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 而不是自己处理滚动和手势吗?

于 2010-11-11T18:30:11.720 回答
0

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

如果 SlideShowViewController 只是已推送到导航控制器堆栈的其他视图的子视图,我将尝试在实际位于导航控制器堆栈上的视图控制器中侦听此方法,然后从那里调用 SlideShowViewController 中的适当方法.

于 2010-11-05T14:06:45.727 回答
0

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

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [self.navigatioController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}
于 2010-11-11T00:36:17.727 回答
0

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

我以为我会为任何出现相同症状的人发布此“不埋在评论中”。

第一个是我注意到一个 IBOutlet 我确定我在某个点连接不再连接(Tab Bar Controller -> tabBarController 对象)。由于我绞尽脑汁并移动了一些东西来完成这项工作,这可能是由于我尝试了一些东西然后恢复了备份。

解决方案的第二部分是将库视图添加到 tabBarController 的视图而不是导航到视图中。然后调用根视图控制器的 shouldAuto... 和 willAuto 方法。

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

在此之后,有一个请求从另一个选项卡导航到详细视图中的画廊,我得到了一个棘手的错误,只有当其他(工作)详细视图显示在另一个选项卡下时才会自动旋转与新的工作画廊。将回到解决方案,退出时间。

于 2010-12-08T16:20:44.337 回答