【问题标题】:Force rotation without user knowing在用户不知情的情况下强制旋转
【发布时间】:2013-02-26 03:27:28
【问题描述】:

我的应用允许用户创建发票。数据可以横向或纵向输入。

然后,用户可以保存报价并在集合视图中查看保存的报价。类似于 iOS 上的 Pages。磁贴的大小是设备在纵向视图中的纵横比。

因此,如果用户保存报价,我会生成视图的屏幕截图并将其保存,以便可以在平铺视图中查看(如 iOS 页面)。如果用户在设备处于纵向时保存,这一切正常。如果他们在风景中保存它很糟糕。

所以我的问题是,有一种方法可以在幕后旋转视图,从中生成一个 UIImage,而用户不知道有任何方向变化。

【问题讨论】:

  • 为什么不完全按照您想要保存的方式创建模板视图(可能是纵向视图或其他视图,等等),然后用您想要的数据填充它并将其渲染到 UIImage 和保存。这些都不必在视图堆栈中发生。
  • 这就是我想要做的,但加载发票创建视图会占用大量内存。所以我想知道是否有办法解决这个问题。
  • 糟糕的用户体验?是的,我听说过 HTML。未打印或通过电子邮件发送发票。我只是想创建发票的缩略图,以便用户以图形方式仔细阅读已保存的发票。请阅读问题以提供居高临下的答案。如果您不知道 Obj-c(问题被标记),请不要回答。 @uchuugaka

标签: ios objective-c uiview uiimageview uiinterfaceorientation


【解决方案1】:

如果您在同一线程中运行旋转它并截取屏幕截图的代码,那么只要您在线程完成运行之前将其旋转回来,设备的屏幕就不会更新。只需旋转所有内容(或者如果您有太多要旋转的对象,请对其进行截图然后旋转该截图)现在对您的新旋转视图进行截图(或者如果您截图并旋转它不会做任何事情,你完成了)然后旋转一切(再次除非你只是截图然后旋转)......如果你需要一个可以在 1 个线程中运行的截图方法,请使用 CGContext 代码。

(回答你的问题,旋转总是在幕后,只有当你的线程结束时它才会变成场景的“前面”......所以如果你在线程结束之前将它旋转回来,用户将永远看不到这是因为设备的屏幕在旋转两次之后才会更新,来回旋转......宾果游戏!)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    相关资源
    最近更新 更多