Xcode 11 - 在催化剂 Swift 中禁用调整大小模式
Posted
技术标签:
【中文标题】Xcode 11 - 在催化剂 Swift 中禁用调整大小模式【英文标题】:Xcode 11 - Disable resize mode in catalyst swift 【发布时间】:2019-12-14 17:39:52 【问题描述】:我们正在使用 Xcode 11 中的 Catalyst将我们基于 Swift 的 iOS 应用程序转换为 Mac 兼容。
当用户 resize 应用窗口时,我们在 UI 中遇到问题。那么我们可以禁用调整大小模式并为应用窗口提供固定框架吗?
【问题讨论】:
谁给减号,为什么? 【参考方案1】:您可以在 application:didFinishLaunchingWithOptions
方法中调用它:
UIApplication.shared.connectedScenes.compactMap $0 as? UIWindowScene .forEach windowScene in
windowScene.sizeRestrictions?.minimumSize = CGSize(width: 480, height: 640)
windowScene.sizeRestrictions?.maximumSize = CGSize(width: 480, height: 640)
【讨论】:
为了解决这个问题,我有一个类似的问题,用户调整催化剂项目窗口的大小,我想在调整窗口大小时放入一些代码来重绘一些视图。这是什么方法?由于这是一个ios项目我不知道是否有'viewDidResize'之类的功能? @samp17:你用什么来设置视图大小?约束还是框架? 情节提要中的约束 @samp17 在您的视图控制器中查看viewWillTransitionToSize:withTransitionCoordinator:。【参考方案2】:Beta 5 将 sizeRestrictions
属性添加到 UIWindowScene。
如果您将sizeRestrictions.maximumSize
和sizeRestrictions.minimumSize
设置为相同的值,则窗口将无法调整大小:
windowScene.sizeRestrictions?.minimumSize = CGSize(width: 640, height: 480)
windowScene.sizeRestrictions?.maximumSize = CGSize(width: 640, height: 480)
添加此代码最简单的地方可能是场景委托中的scene(_:willConnectTo:options:)
。传入的scene
对象是UIWindowScene
,所以只需转换它,然后设置sizeRestrictions
。
注意:sizeRestrictions
仅在 iOS 10.15 Beta 5 中可用。此代码将在旧 Beta 版中崩溃。
【讨论】:
我需要在哪里写上面的代码?在 SceneDelegate 文件中? 感谢 adam 的帮助,问题是崩溃问题在 macOS Catalina beta 5 中得到解决。 是的,您的场景代理可能是最简单的。我更新了我的答案。 我在尝试禁用 ios 计算器应用程序的调整大小模式并尝试使用催化剂将其转换为 mac 时遇到同样的问题。而且这个解决方案对我不起作用。 在使用 SwiftUI 通用的 Xcode 12.2 测试版中,我没有 SceneDelegate 文件。我可以在哪里以及如何在我的 @main 应用程序文件中插入代码?以上是关于Xcode 11 - 在催化剂 Swift 中禁用调整大小模式的主要内容,如果未能解决你的问题,请参考以下文章
无法在 iOS 15 swift 上禁用键盘上的自动填充。 Xcode 13