gpt4 book ai didi

ios - 如何在一个 View 不应自动旋转而一个 View 应该自动旋转的 iOS 应用程序中处理自动旋转?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:55 24 4
gpt4 key购买 nike

比如说,如果是iPad上的一个简单的绘图程序,当用户在Portrait模式下从(0,0)到(730, 1000)画一条线时,这条线会完整显示出来。但是如果用户将 iPad 旋转 90 度会怎么样,如果我们允许自动旋转,那么该行将在底部被切断。

因此包含 Canvas 的 View 不应自动旋转。

另一方面,如果屏幕上有一个撤消按钮,或者一个滑出面板,那么这部分实际上应该根据 iPad 的旋转状态自动旋转。

如何最好地实现?因为通常我们所有的东西都有自动旋转,或者根本没有自动旋转,但这种情况需要一半一半。

最佳答案

我不得不同意 lnafziger 的观点,我很难想象用户会希望他们的绘图在旋转设备时不旋转。绘图时,图像的上下和左右方面对于创意绘图过程来说是如此不可或缺,以至于我原以为看到 View 上的控件旋转但图像不旋转会很奇怪。最重要的是,我认为您真的希望在用户旋转设备时保留图像的上下和左右。但我认为你是绝对正确的,如果用户在旋转设备时图像的纵横比发生变化(即如果你挤压图像),他们会发现它会迷失方向。

现在,您提到了一种防止纵横比受到干扰的解决方案,即保持绘图图像为正方形,例如 768x768,并且可能使用额外的空间来布置一些控件/工具。更好的是,您可能想要引入由用户可以在其上平移/滚动的页面组成的绘图的概念。这样,您可以将图像制作成用户想要的任何大小,并且当用户旋转设备时,图像的“页面”不会改变,只是 iPad 屏幕所代表的那个页面上的小视口(viewport)。如果您确信用户想要旋转图像,则为他们提供旋转页面的功能,而不管设备方向如何。您可以轻松地将他们想要的所有东西的坐标映射到新空间中。该映射应该非常简单。

但是,如果您决定在他们旋转设备时不旋转图像(尽管我们坚持认为这似乎不是一个好主意),似乎有两种方法(假设您不会考虑最简单的解决方案,即只允许应用程序中的一个方向):

首先,您可以重新映射用户绘制的对象的所有坐标,然后在旋转完成后重新绘制对象。同样,当您旋转 90 度时重新映射所有 x、y 坐标非常简单。

其次,您可以将绘图放在它自己的图层上,然后执行 CGAffineTransformRotate在设备旋转时(例如,如果用户顺时针旋转设备 90 度或 PI/2 弧度,则您将逆时针旋转图层 PI/2)。令我印象深刻的是,当您在转换后绘制新线或其他对象时,这可能会造成混淆,因为您可能必须将新坐标映射到转换后的图层,但我怀疑您可以让它工作。请参阅 CGAffineTransformRotate 的文档想要查询更多的信息。如果您用谷歌搜索,就会发现大量示例。

关于ios - 如何在一个 View 不应自动旋转而一个 View 应该自动旋转的 iOS 应用程序中处理自动旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10777053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com