问题
如何创建具有用户定义大小的 UIView,然后按比例放大/缩小以适合作为 UIViewController 的 subview ?
用例
我正在开发一个主要侧重于在连接到 iOS 设备的外部显示器上显示自定义 UIView 的应用程序。应创建自定义 View 以原生适合外部显示器。假设外接显示器的分辨率为 1920x1080。将创建 UIView 以适合该大小,然后自动布局将完成它。 - 太棒了!
通常,应用程序用户实际上看不到外接显示器,因此应用程序的另一个重要部分是在 iOS 设备上提供外接显示器的表示。当然,这些小窗口不会与外部显示器具有相同的分辨率,并且由于 AutoLayout,简单地创建另一个 View 并将其粘贴到内部显示器上不会产生相同的结果。
目标
我想知道如何以与外部显示器相同的尺寸(因此布局相同)以编程方式创建另一个自定义 View 实例,然后缩放该 View 向上/向下填充内部显示屏上的 subview 。同样,重要的是内部显示器上的预览窗口与外部显示器上显示的内容相同。我知道可能存在一些缩放伪影 - 这完全没问题。
应用实例
有关的应用程序可以在 liveevent.software 查看。 .我的问题是关于外部显示器和在 iPad 屏幕上查看的外部显示器的预览。当然,我们已经有了这个工作,但我们正在添加更多功能,并且需要本地预览与外部预览完全相同,以便运算符(operator)知道消息是否太长等...
重要提示
正在缩放的 UIView 不包含任何手势识别器或其他需要用户交互的项目。只需几个 UILabel。
问题
当前的“工作”解决方案是创建自定义 View 的两个实例,并让它们根据自动布局进行调整。虽然这会粗略估计外部显示的内容,但并不准确。例如,文本可能会在 iOS 预览窗口中换行,但在实际的外部显示器上不会(因为它的尺寸更大)。
最佳答案
我不会创建 View 的另一个实例并使用资源根据用户操作更新两者,而是使用 snapshotView 创建任何更改时的 View 快照。方法。在性能方面,snapshotView
非常高效,它返回一个内容不可编辑的 View 对象。这意味着您可以根据需要对其进行缩放,以便在第二个屏幕上获得 currentView 的精确镜像。
SnapshotView 方法可能会使用 gpu 资源,从而让您的 CPU 可以在第二个屏幕上自由发挥高帧率和性能。
关于ios - 在没有 AutoLayout 效果的情况下缩放自定义 UIView 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42894549/