4

我试图解决的问题是:

使用 UIImagePicker 时,它会在设备旋转时自行调整。我不希望它这样做,而是应该始终保持纵向。我用谷歌搜索了很多,但没有找到任何解决方案(只是其他人有同样的未解决问题)。唯一的答案是使用私有 API 调用,我宁愿不冒险这样做。

-

然而,我遇到了' method swizzling '——一种在运行时交换方法名称的方法。我打算做什么:

  • 向 UIViewController 添加一个类别,该类别定义了一个方法,例如“customShouldRotate”,定义了不允许旋转的自定义行为。

  • 在运行时将这些方法与 UIViewController 的默认旋转方法混合。

-

不过想了想,可能没那么简单。这就是为什么 - 任何对以下内容的回答将不胜感激。

  • 我正在调整的方法是在 UIViewController,而不是 UIImagePickerController。我不能直接在图像选择器中进行调整,我已经尝试过通过子类化,它似乎是处理旋转的子视图控制器,而不是 UIImagePickerController 本身。混合的方法是否会传递给子类,如果没有,那么是否有解决方法来做到这一点?

  • 它可能不是 UIImagePickerController 中使用的 UIViewController 的正常旋转方法。有没有办法告诉?

  • Apple 会接受方法调配吗?我没有使用私有 API 调用,但是如果他们无论如何都拒绝它,我也不会过于惊讶。

-

这整个想法是否可行/值得尝试 - 或者,如果有人实际上以不同的方式解决了原始问题,那会更好。

4

1 回答 1

0

方法调配很好:Apple 使用静态分析器检查私有 API。如果您可以在不调用私有 API 的情况下重载、调配或做任何您想做的事情来达到相同的效果,那么分析器就不会接收到它。

苹果可能拒绝你的唯一原因是修改“标准”行为——但我怀疑这不会发生。最糟糕的是你的应用程序被踢回给你,你必须恢复原来的行为。

于 2011-03-21T08:33:51.890 回答