iPhone:我想出了一个有趣的方法,我可以解决API限制。这会有用吗?

时间:2011-03-21 07:31:20

标签: iphone objective-c app-store swizzling

我想解决的问题是:

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

-

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

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

  • 在运行时使用UIViewController的默认旋转方法调用这些方法。

-

经过一番思考后,可能并不那么简单。这就是为什么 - 对以下任何答案都会非常感激。

  • 我正在调整的方法是在UIViewController中,而不是UIImagePickerController。我不能直接在图像选择器中调情,我已经尝试通过子类化,它似乎是一个子视图的控制器,它处理旋转而不是UIImagePickerController本身。将swizzled方法传递给子类,如果没有,那么是否有解决方法来执行此操作?

  • 它可能不是UIVmagePtroller中正在使用的UIVmageController的正常旋转方法。有什么办法可以说出来吗?

  • Apple方法调整会好吗?我没有使用私有API调用,但是如果他们拒绝它我也不会感到非常惊讶。

-

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

1 个答案:

答案 0 :(得分:0)

方法调整很好:Apple使用静态分析器检查私有API。如果你可以超载,混合或做你想做的事情没有调用私有API它将不会被分析器拾取。

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