iPhone:I';我想出了一个有趣的方法,可以绕过API限制。这样行吗?

iPhone:I';我想出了一个有趣的方法,可以绕过API限制。这样行吗?,iphone,objective-c,app-store,swizzling,Iphone,Objective C,App Store,Swizzling,我试图解决的问题是: 使用UIImagePicker时,它会随着设备的旋转自行调整。我不希望它这样做,相反,它应该一直保持纵向。我在谷歌上搜索了很多次,但没有找到任何解决方案(只有其他人有相同的未解决问题)。唯一的答案是使用私有API调用,我不想冒险这样做 - 但是,我遇到了“”——一种在运行时交换方法名称的方法。我计划做什么: 向UIViewController添加一个类别,该类别定义一个方法,例如“customShouldRotate”,定义不允许旋转的自定义行为 在运行时使用UIView

我试图解决的问题是:

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

-

但是,我遇到了“”——一种在运行时交换方法名称的方法。我计划做什么:

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

  • 在运行时使用UIViewController的默认旋转方法快速切换这些方法

-

不过,经过一番思考,事情可能没那么简单。以下是原因——如果您能回答以下问题,我们将不胜感激

  • 我正在使用的方法是在UIViewController中,而不是在UIImagePickerController中。我不能直接在图像选择器中旋转,我已经尝试过通过子类化,它似乎是处理旋转的子视图的控制器,而不是UIImagePickerController本身。swizzled方法会传递给子类吗?如果不会,那么有解决方法吗

  • 它可能不是UIImagePickerController中使用的UIViewController的正常旋转方法。有什么办法可以说吗

  • 苹果会同意这种方法吗?我没有使用私有API调用,但如果他们拒绝了,我也不会太惊讶

-


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

方法swizzling很好:苹果使用静态分析器检查私有API。如果您可以在不调用私有API的情况下重载、swizzle或执行您想要的操作来实现相同的效果,那么分析器将不会接收到它


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

苹果似乎正在改变他们关于方法滑动的政策:感谢你用这些新信息更新答案。这是非常有趣的,他们会提醒商店里已经有应用的人这一点…这一定是一个相当大的变化即将到来。