Mac catalyst allows to resize window, any way to provide minimum window size for Mac catalyst app?
我有以下内容UICollectionViewCompositionalLayout:
public lazy var layout: UICollectionViewLayout = {
let layout = UICollectionViewCompositionalLayout {
(sectionIndex: Int, layoutEnvironment: NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection? in
let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0),
heightDimension: .fractionalHeight(1.0))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0),
heightDimension: .absolute(115))
var count: Int = 2
if self.view.traitCollection.horizontalSizeClass != .compact {
if self.view.frame.size.width > 900 {
count = 5
} else {
count = 3
}
}
let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitem: item, count: count)
let spacing = CGFloat(10) …Run Code Online (Sandbox Code Playgroud) 由于Catalyst,最终可以将应用程序移植到macOS了,问题是,许多Pod不支持AppKit。最常见的一种是Crashlytics / Firebase。
In [...]/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics(CLSInternalReport.o), building for Mac Catalyst, but linking in object file built for iOS Simulator, file '[...]/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics' for architecture x86_64
Run Code Online (Sandbox Code Playgroud)
由于这是一个新话题,我找不到有关如何从macOS的构建中删除pod的文档,但如何在iOS和iPadO S上保留它。
可以在代码中使用:
#if !targetEnvironment(macCatalyst)
// Code to exclude for your macOS app
#endif
Run Code Online (Sandbox Code Playgroud)
但是问题的一部分,另一部分是仅针对iOS链接容器...
如果该库对于macOS而言并不重要,但仍在iOS上仍需要,那么最简单/最佳的做法是什么?
我正在尝试创建 iPad 应用程序的 Mac Catalyst 版本。我选中了复选框,选择了“我的 Mac”方案,我运行了...然后,代码签名错误(链接如下)!
当我选中该复选框时,“签名和功能”选项卡添加了一个新的 macOS 平台条目和一个捆绑包标识符:maccatalyst.com.mycompany.myapp。该 maccatalyst.com 捆绑包 ID 未显示在 Apple 开发者网站的“证书、标识符和配置文件”部分中。当我尝试通过添加应用程序 ID、选择 Mac 并指定显式捆绑包 ID 来手动添加它时,出现以下错误:标识符为“maccatalyst.com.mycompany.myname”的应用程序 ID 不可用。请输入不同的字符串。
正如此处所建议的,我还尝试: 1. 转到“证书、标识符和配置文件”。2. 选择“配置文件” 2. 选择您尝试从中进行催化的 iOS 应用程序。3. 启用“Mac”。4. 等待几个小时。
我必须如何进行?
我正在尝试在 Catalyst 应用程序中重新创建与 iOS 上的设置应用程序相同的外观和感觉。
我得到了一个 SplitViewController,其中一个 TableViewController 设置为“分组为主”,一个 TableViewController 设置为“插入分组为详细信息”。
对于表视图,我将背景颜色设置为系统分组背景颜色,对于表视图单元格,我将背景颜色设置为辅助系统分组背景颜色。
除了 Mac 上的浅色模式外,所有设备(iOS / Mac)上的一切看起来都符合预期。看起来颜色颠倒了。表视图应具有浅灰色背景颜色,表视图单元格应具有白色背景颜色,但反之亦然。
这是 Mac 的默认行为还是有问题?
我在 GitHub 上创建了一个示例项目:
https ://github.com/robertveringa89/systemgroupedbackgroundcolor
我有一个简单的 iOS 游戏,我正在将其移植到 Mac 上。我希望用户能够使用键盘控制游戏。没有本机文本输入(如UITextField、UITextView)。
如何在 Mac Catalyst 应用程序中侦听按键事件?这看起来并不微不足道。
UIKeyCommand不起作用,因为它似乎是为组合而设计的(例如cmd+c)。我可以创建一个假文本字段,但我正在寻找一种更简洁的方法来执行此操作。我想听单个字母和数字。
我可以以NSResponder::keyDown(with:)某种方式整合吗?
目标是在 Mac Catalyst 上制作一个半透明的侧边栏。
下面的代码给出了一个不透明的侧边栏(图 1)。
在 Mac(不是催化剂)上,侧边栏看起来不错(图 2)。
Mac Catalyst 上是否可以有一个半透明的侧边栏?
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
//sidebar
List {
Label("Books", systemImage: "book.closed")
Label("Tutorials", systemImage: "list.bullet.rectangle")
}
.background(Color.clear)
.listStyle(SidebarListStyle())
//content
Text("Sidebar")
.navigationTitle("Sidebar")
}
}
}
Run Code Online (Sandbox Code Playgroud) 我开发了一个 iOS 应用程序,并希望通过 Catalyst 将它带到 macOS。一切正常,我可以使用以下代码优化 mac 的布局:
extension UIDevice {
var type: DeviceType {
#if targetEnvironment(macCatalyst)
return .mac
#else
switch UIDevice.current.userInterfaceIdiom
{
case .phone:
return .phone
case .pad:
return .pad
default:
return .phone
}
#endif
}
}
Run Code Online (Sandbox Code Playgroud)
我主要使用它来在 CollectionView 中显示不同的幻灯片。
在我本地的 Macbook 15(2017,Big Sur 11.0.1)上,一切正常。但是当将应用程序发布到 App Store 时,它被拒绝,因为它显示了 iPad - 布局。
有没有人遇到过类似的问题?还是我在归档构建时犯了一个错误?(目的地:任何 Mac(Apple Silicon、Intel) -> 产品 -> 存档)
非常感谢!
我已经能够将应用程序的 iOS 版本上传到 App Store。\n但是当我尝试上传 MacOS 版本 (Catalyst) 时,我不断收到错误消息
\n\n\n警告 ITMS-90889:“”无法与 TestFlight 一起使用,因为 \xe2\x80\x9cTradeFlags.app\xe2\x80\x9d 处的捆绑包缺少配置文件。主要捆绑包预计将具有配置文件,以便有资格参加 TestFlight。”
\n
我在其他帖子中看到需要重新下载配置文件,我就是这样做的。\n检查 Xcode -> 首选项 -> 帐户 -> 管理证书,我看到在生成新版本时添加了所有新版本。
\n\n但当我尝试将构建重新提交到 App Store 时,它仍然给出与上面相同的错误。
\n我对下一步该做什么失去了理智。谁能建议下一步做什么?
\n背景
shareImage()下面代码中的函数启动UIActivityViewController并共享图像,例如发送到消息或保存到照片。
图像共享后,UIActivityViewController完成并调用该completionWithItemsHandler函数activityComplete()。
该代码在 iOS / iPadOS / MacOS 上运行良好,符合预期并共享图像,但在 MacOS 上,该completionWithItemsHandler函数activityComplete()永远不会被调用,并使用标志确认print("Share complete.")。
Xcode 会记录以下输出:
Scene destruction request failed with error: (null)
问题
导致该completionWithItemsHandler函数activityComplete()无法在 MacOS 上调用的问题的原因是什么?如何在代码中纠正此问题?
代码
注意:根据答案添加了两行更新。
import UIKit
class ViewController: UIViewController {
var shareButton = UIButton(type: UIButton.ButtonType.custom)
var activityImage: UIImage!
override func viewDidLoad() {
super.viewDidLoad()
// Create share button
shareButton.setTitle("Share", for:UIControl.State())
shareButton.setTitleColor(.white, for: UIControl.State())
shareButton.backgroundColor = .purple …Run Code Online (Sandbox Code Playgroud) mac-catalyst ×10
ios ×5
swift ×5
macos ×4
ipad ×2
cocoapods ×1
code-signing ×1
ios13 ×1
swiftui ×1
systemcolors ×1
testflight ×1
uikit ×1
uitableview ×1
xcode ×1