即使ipad面向横向左侧,也会显示横向右视图

时间:2014-09-25 13:21:44

标签: ios objective-c iphone orientation

我的应用程序需要在iPhone中以纵向和横向模式运行。

所有模式都能正常运行。 如果用户将手机转到LandscapeLeft模式,视图将以左侧横向显示,如果用户将设备转为LandscapeRight,则视图将旋转为横向右侧。

而我想要的是在设备的LandscapeLeft和LandscapeRight的方向上触发LandscapeLeft视图。

技术上可行吗?我觉得不是。 有没有办法实现这个目标?

编辑:为了使概念更清晰,我添加了一个示例图片。无论旋转的位置如何,图像中的手指必须始终指向iPhone设备的“主页”按钮(不支持倒置) Portrait view

Landscape View

3 个答案:

答案 0 :(得分:1)

好的,为了让这个工作起作用,你需要启用你想要工作的所有方向。

因此,启用左,右和纵向。

然后你有一张图片......

enter image description here

现在你需要在设备方向改变时调用的函数......

// pseudo code...
- (void)orientationChanged
{
    CGAffineTransform transform;

    switch (currentOrientation) {
        case portrait:
            // rotate from pointing right to pointing down
            transform = CGAffineTransformMakeRotation(M_PI / 2);
            break;
        case left:
            // flip horizontally
            transform = CGAffineTransformMakeScale(-1, 1);
            break;
        case right:
            // pointing right
            transform = CGAffineTransformIdentity;
            break;
    }

    self.pointingImageView.transform = transform;
}

或类似的东西。

通过使用旋转和缩放,您可以在所有方向上制作相同的图像点。但你必须亲自去做。你不能只依靠方向改变来做到这一点。

如果你想为每个方向使用不同的图像,那么只需换出变换内容即可更改图像。但这个概念仍然保持不变。

答案 1 :(得分:0)

这是一个更通用的答案(适用于SVG,本机应用程序或其他),只是为了帮助人们可视化问题。 (根据我的经验,一旦你知道如何定义问题,你就可以找到解决任何平台或编程语言的方法)

diagram showing image conditions

我相信Fogmeister对这个问题有一个可行的解决方案。但请记住,翻转X和Y轴上的内容,你就可以达到你想要的效果。

答案 2 :(得分:-1)

您可以选择设备方向选项,如纵向,纵向倒置,部署信息中的横向右侧