标签: ios16

SwiftUI Plain List 如何删除 iOS16 中的顶部标题填充

我正在寻找一种方法来删除 SwiftUI 列表中的顶部填充

借助 iOS 15,我们可以做到UITableView.appearance().sectionHeaderTopPadding = 0

但是,在 iOS 16 中,List 已使用 UICollectionView 重新实现,我找不到删除节标题顶部填充的方法

这是示例代码

import SwiftUI

struct TaskRow: View {
    var body: some View {
        Text("Task data goes here")
    }
}

struct HeaderText: View {
    var text:String
    var body: some View {
        Text(text)
            .font(.system(.title3))
            .fontWeight(.bold)
            .foregroundColor(.primary)
    }
}

struct ListWithSections: View {
    init() {
        if #available(iOS 15.0, *) {
            UITableView.appearance().sectionHeaderTopPadding = 0
        } else {
            // Fallback on earlier versions
        }
    }
    
    var body: some View { …
Run Code Online (Sandbox Code Playgroud)

list padding swiftui ios16

10
推荐指数
1
解决办法
2214
查看次数

实现的 iOS AppIntents 不显示在快捷方式中

我正在尝试测试当前 iOS16 Beta 上的新 AppIntents API。查看文档,实现似乎非常简单,但实现后,我在快捷方式应用程序中没有看到我的 AppIntent。该设备运行的是 iOS 16.0。

这就是我实现 AppIntent 的方式:


import AppIntents

struct DoSomethingIntent: AppIntent {
    
    static var title: LocalizedStringResource = "This will do something"
    
    static var description = IntentDescription("Does something")
    
    func perform() async throws -> some PerformResult {
        return .finished(value: "Done")
    }
}

Run Code Online (Sandbox Code Playgroud)

根据文档,快捷方式应用程序应该能够在安装我的应用程序后找到我的 AppIntent,但我发现情况并非如此。有谁知道我的实施缺少什么?

ios ios16 appintents

9
推荐指数
2
解决办法
2490
查看次数

如何在 SwiftUI 4.0 中重新创建 iOS 16 锁屏小部件 Vibrant 效果?

我正在寻找一种方法来重现 iOS 16 上的锁屏小部件上出现的“充满活力”的 iOS 16 效果,因为我的应用程序应该能够在用户创建过程中显示小部件的预览。

示例:请参阅下面中央屏幕上的 4 个圆形小部件。

查看中央屏幕上的 4 个圆形小部件。

以下是 Apple 文档中关于此效果的说明:

充满活力:对于锁定屏幕小部件,iOS 将文本、图像和仪表去饱和为单色,并通过为锁定屏幕背景适当地着色内容来创建充满活力的效果。人们还可以将锁定屏幕着色为彩色色调。 来自苹果文档

我不知道如何重现这种效果。尝试了该代码但不满意:

MyOriginalView()
    .compositingGroup()
    .saturation(0.0)
    .blendMode(.plusLighter) // or .blendMode(.hardLight)
Run Code Online (Sandbox Code Playgroud)

以下是我想重现的对 iOS 16 充满活力的效果的更准确解释。

使用源视图和参数颜色,将源视图转换为灰度。白色像素似乎是使用参数颜色渲染的,而黑色像素则使用基于参数颜色的模糊透明深色。

请参阅下面的视图转换示例。

查看转换示例

以下是一些用于创建测试图像并从此视图渲染 iOS 16 小部件的代码。这正是我想在我的应用程序中模仿的效果。

SwiftUI 4.0 代码(iOS16+):(我认为您需要为代码添加一个 Widget Target 来编译)

import SwiftUI
import WidgetKit

struct SourceView: View {
    var body: some View {
        VStack (spacing: 0) {
            Color.black
            HStack (spacing: 0) {
                Color.black
                Color.black.opacity(0.75)
                Color.black.opacity(0.5)
                Color.black.opacity(0.25)
                Color.black.opacity(0.0)
            }
            HStack (spacing: 0) {
                Color.red
                Color.blue
                Color.green
                Color.yellow
                Color.white
            }
            HStack (spacing: …
Run Code Online (Sandbox Code Playgroud)

user-interface widget effect swiftui ios16

9
推荐指数
1
解决办法
2371
查看次数

iOS 16 Beta 5 AVAudioSession setCategory 产生奇怪的错误“什么”

最近安装 iOS 16 beta 5 后,我们遇到了一个问题try AVAudioSession.sharedInstance().setCategory(<category>, options: .mixWithOthers),出现错误并失去连接。

这是错误:

AVAudioSession_iOS.mm:2365 Failed to set category, error: 'what'

没有关于此错误的其他信息。任何帮助将不胜感激。

仅供参考:这仅在 iOS Beta 5 中才开始出现,之前在 iOS Beta 4 中也曾出现过。

ios avaudiosession swift avaudiosessioncategory ios16

9
推荐指数
1
解决办法
4297
查看次数

具有图形样式的 DatePicker 打破了 iOS 16.0 上的布局限制

以下代码在 iOS 16.0 的 Xcode-14.0.0-Beta 5 上运行时打破了布局约束

struct ContentView: View {
    
    @State var date = Date()
    
    var body: some View {
        DatePicker(selection: $date, displayedComponents: .date, label: { EmptyView() })
            .datePickerStyle(.graphical)
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么建议如何修复或隐藏警告吗?

控制台警告:

2022-08-24 17:16:40.471325+0300 DatePickerProblem[77364:483284] [LayoutConstraints] 无法同时满足约束。可能至少以下列表中的约束之一是您不想要的。尝试这样做:(1)​​查看每个约束并尝试找出您不期望的约束;(2) 找到添加了不需要的约束的代码并修复它。(注意:如果您看到不理解的 NSAutoresizingMaskLayoutConstraints,请参阅 UIView 属性的文档translatesAutoresizingMaskIntoConstraints) ( "<NSAutoresizingMaskLayoutConstraint:0x600003559180 h=--& v=--& _UIDatePickerCalendarTimeView:0x7fe15c322520.height == 0 (活动)>", "<NSLayoutConstraint:0x60000352bca0 _UIDatePickerCompactTimeLabel:0x7fe15c322bc0.centerY == _UIDatePickerCalendarTimeView:0x7fe15c322520.centerY - 1 (活动)>", "<NSLayoutConstraint:0x60000352bcf0 V:|-(> =0)-[_UIDatePickerCompactTimeLabel:0x7fe15c322bc0 ] (active, names: '|':_UIDatePickerCalendarTimeView:0x7fe15c322520 )>" ) 将尝试通过破坏约束来恢复 <NSLayoutConstraint:0x60000352bca0 _UIDatePickerCompactTimeLabel:0x7fe15c322bc0.centerY == _UIDatePickerCalendarTimeView:0x7fe15c322 520.centerY - 1(活动)> 制作符号断点在 UIViewAlertForUnsatisfiableConstraints 中在调试器中捕获此内容。<UIKitCore/UIView.h> 中列出的 UIView …

datepicker ios swift swiftui ios16

9
推荐指数
1
解决办法
2006
查看次数

为什么 iOS 16 中弹出时导航标题显示方式会从大变为内联?

当我从具有内联显示模式的推送视图中弹出时,最初较大的父视图的显示模式更改为内联,并且用户必须向下滚动标题才能恢复到其原始模式。

问:如何确保设置视图上始终显示大标题?

我使用的是 Xcode 14 beta 6,在预览中它不会发生,但在运行 iOS 16 的模拟器上它会发生。

设置视图

struct SettingsView: View {
    @State private var isPresentingChangePasswordView = false
    
    var body: some View {
        Form {
            Section {
                NavigationLink(destination: EmptyView()) {
                    Label("Account Details", systemImage: "person")
                }
                NavigationLink {
                    Form {
                        Button("Change Password") {
                            isPresentingChangePasswordView = true
                        }
                    }
                    .navigationTitle("Password & Security")
                    .navigationBarTitleDisplayMode(.inline)
                } label: {
                    Label("Password & Security", systemImage: "lock")
                }
                NavigationLink(destination: EmptyView()) {
                    Label("Manage Subscription", systemImage: "crown")
                }
                Button {
                    
                } label: {
                    HStack {
                        Label …
Run Code Online (Sandbox Code Playgroud)

swift swiftui swiftui-navigationview ios16 swiftui-navigationstack

9
推荐指数
0
解决办法
1140
查看次数

Xcode - 物理 iOS - 不支持的操作系统版本 (iOS 16)(无法在真实设备上启动)

将 iPhone 上的操作系统版本更新到 iOS 16 后,我在 Xcode 中收到消息,告知物理设备上的版本安装不受支持,因此我无法在该设备上启动该应用程序:(

iphone xcode ios react-native ios16

9
推荐指数
2
解决办法
2万
查看次数

视觉扫描无法识别 iOS16 上的 GS1 条形码特殊字符

我们正在使用Vision库来扫描 GS1 条形码。

该库无法识别 iOS 16 版本中的特殊字符“GS”。

"GS" --> 组分隔符 (ASCII 29)

我们在旧版本上没有遇到这样的问题。例如 iOS 15.6 或更低版本。我在下面上传了 GS1 条形码示例图像。

扫描后我们应该得到:{GS}10BF50001A{GS}21003032{GS}1122012722VD020

我们在 iOS 16 上得到的是:10BF50001A210030321122012722VD020

我还发布了有关如何使用该库的示例代码。我们没有更改代码,该错误仅出现在 iOS 16 版本上。我们想知道是否引入了错误。

func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
    guard let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else {
        return
    }

    let imageRequestHandler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer, orientation: .right)

    do {
        try imageRequestHandler.perform([detectBarcodeRequest])
    } catch {
        logger.error(tag: TAG, "barcode error: \(error)")
    }
}

private lazy var detectBarcodeRequest = VNDetectBarcodesRequest { [weak self] request, …
Run Code Online (Sandbox Code Playgroud)

barcode ios swift ios16 gs1-qr-code

9
推荐指数
1
解决办法
755
查看次数

不完整的向后滑动手势导致 NavigationPath 管理不善

我正在下面的示例代码中寻找以下错误的解决方案。我尝试使用 SwiftUI 4 和 iOS 16.0 导航 API 变更集实现导航器模式。

下面的示例将在 Xcode 14.0+ 中编译,如果在模拟器或 iOS 16.0 设备中运行,将会产生我所描述的错误。我想知道这是缺乏知识还是平台错误。通过我的日志,我可以看到,当我用不完整的向后滑动手势引发错误时,导航路径的元素计数上升到 2,而实际上它应该在根处返回到 0,并且仅在第一层保留 1 个元素看法。

有没有办法可以更好地管理此类视图层次结构的路径?或者,这是一个平台级错误吗?

import SwiftUI

enum AppViews: Hashable {
    case kombuchaProductsView
    case coffeeProductsView
    case customerCartView
}

struct RootView: View {
    @StateObject var drinkProductViewModel = DrinkProductViewModel()
    
    var body: some View {
        NavigationStack(path: self.$drinkProductViewModel.navPath) {
            List {
                Section("Products") {
                    NavigationLink(value: AppViews.kombuchaProductsView) {
                        HStack {
                            Text("View all Kombuchas")
                            Spacer()
                            Image(systemName: "list.bullet")
                        }
                    }
                    NavigationLink(value: AppViews.coffeeProductsView) {
                        HStack {
                            Text("View all Coffees")
                            Spacer()
                            Image(systemName: "list.bullet")
                        } …
Run Code Online (Sandbox Code Playgroud)

drag swiftui swiftui-navigationlink ios16 swiftui-navigationstack

9
推荐指数
3
解决办法
1537
查看次数

自 iOS 16 起需要 Apple/iPhone/iOS 开发分发开发者模式

我已经开发(并使用)了一个 iOS 应用程序多年,但我不想将其发布到 App Store。在 iOS 16 之前,开发/分发一切都很好,我认为我需要每年发布一次新版本才能保持其运行(我猜是因为证书的有效期为 1 年,这很好)

但自 iOS 16 起,需要启用“开发者模式”才能运行该应用程序。如果我是唯一一个使用该应用程序的人,那就没问题,但还有另外 2 个人也使用该应用程序,我真的不希望他们启用此“开发人员模式”只是为了运行我的应用程序。对我个人来说这没问题,因为我是一名开发人员,我知道这意味着什么

有谁知道是否有可能允许在 iOS 16 中运行应用程序而无需启用“开发者模式”并且不将应用程序发布到 App Store?

到目前为止,我尝试过的是通过配置文件将发行版从“开发”更改为“临时”,但这不起作用,而且我真的不明白有什么区别,因为限制似乎很相似。难道苹果犯了一个错误,认为这不适用于“Ad Hoc”并且会在不久的将来“修复”吗?我知道在 iOS 16 Beta 版本之一中,Testflight-Builds 也发生了同样的事情,后来在稳定版本中修复了 Testflight 目前是我拥有的最佳选择之一,但令我困扰的是 a) 你需要一个单独的应用程序为此,b) 构建版本仅在 90 天内有效

iphone xcode ios16

9
推荐指数
1
解决办法
1731
查看次数