标签: ios16

如何在 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
查看次数

在 iOS16 + xcode 14 beta 中隐藏导航栏不起作用

我们使用 Firebase 的 Crashlytics,在过去 2 天里,我们发现 iOS 16 设备上的navigationController?.setNavigationBarHidden崩溃次数激增。安装 Xcode 14.5 后我能够重现崩溃

我有一个嵌入在导航控制器中的视图控制器(VC1),其中包含以下代码

override func viewWillDisappear(_ animated: Bool) {
  super.viewWillDisappear(animated)
  ...
  navigationController?.setNavigationBarHidden(false, animated: animated) // crash here
}
Run Code Online (Sandbox Code Playgroud)

在我使用以下代码推送另一个视图控制器(VC2)之后

navigationController?.pushViewController(vc, animated: true)
Run Code Online (Sandbox Code Playgroud)

应用程序崩溃并显示以下错误消息

2022-08-10 15:07:04.866752-0700 autolist-dev [22341:3295980] *** 由于未捕获的异常'NSGenericException'而终止应用程序,原因:'无法激活带有锚点的约束<NSLayoutXAxisAnchor:0x600001a9d740“_UITAMICAdaptorView:0x7fd6c70 DDBE0 .leading"> 和 <NSLayoutXAxisAnchor:0x600001466680 "_UINavigationBarTitleControl:0x7fd6c70dcb80.leading"> 因为它们没有共同的祖先。约束或其锚点是否引用不同视图层次结构中的项目?这是非法的。

第一次推送 VC2 时,它不会立即崩溃。当我返回 VC1 然后再次推送 VC2 后,应用程序崩溃了。

有谁对如何解决这个问题有任何想法?我似乎找不到其他人有类似的问题

crashlytics swift ios16 xcode14

8
推荐指数
0
解决办法
2681
查看次数

iOS 16 底部工具栏 - SwiftUI

我想要一个带有 SwiftUI 的底部工具栏。以下内容适用于 iOS 15,但不适用于 iOS 16。在 iOS 16 中,工具栏未显示。(如果我改变位置就可以了......)

Text("Content")
    .toolbar {
        ToolbarItemGroup(placement: .bottomBar) {
            Button("Greeting") { 
                print("Hello world!")
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

截图

您对此有什么解决方法吗?

谢谢!

ios swift swiftui ios15 ios16

8
推荐指数
1
解决办法
7028
查看次数

iOS 16 中 List 中的嵌套 ScrollView + 可刷新的奇怪行为

在我的 SwiftUI 应用程序中,我有一个带有嵌套 ScrollView 的列表,因为我已将 iPhone 更新到 iOS 16,所以主列表上的刷新有一个奇怪的行为。似乎每个ScrollView都有自己的刷新。问题是我在主列表上应用了 .refreshable 修饰符,而不是在嵌套列表上。

在 iOS 16 之前,这个问题并不存在。那么,这是一个错误还是我们可以通过某种方式修复它?

这是代码和短视频:

List {
    VStack(alignment: .leading) {
        Text("Line 1")
            .font(.title)
        
        ScrollView(.horizontal, showsIndicators: false) {
            LazyHStack(spacing: 20) {
                Text("Item 1")
                Text("Item 2")
                Text("Item 3")
                Text("Item 4")
                Text("Item 5")
                Text("Item 6")
                Text("Item 7")
                Text("Item 8")
                Text("Item 9")
                Text("Item 10")
            }
            .frame(height: 180)
        }
    }
    .listRowSeparator(.hidden)
    
    VStack(alignment: .leading) {
        Text("Line 2")
            .font(.title)
        
        ScrollView(.horizontal, showsIndicators: false) {
            LazyHStack(spacing: 20) {
                Text("Item 1")
                Text("Item 2")
                Text("Item 3")
                Text("Item 4")
                Text("Item 5") …
Run Code Online (Sandbox Code Playgroud)

iphone ios swift swiftui ios16

8
推荐指数
1
解决办法
934
查看次数

使用 NavigationSplitView 时 iOS 16.1 上的 NavigationTitle 延迟

还有其他人在 iOS 16.1 中遇到这个问题吗?NavigationSplitViewNavigationTitle视图加载后加载?\xe2\x80\x93 在 iOS 16.0 上运行良好。(https://i.stack.imgur.com/G0IUG.gif

\n

它实际上是相同的代码,但它只在 iOS 16.1 上给我带来了问题。

\n

更新:这在 iOS 16.2 和 16.3 上仍然是一个问题。

\n

@Hunter更新:Apple 似乎已在 iOS 16.4 Beta 1 上修复了此问题。

\n

swiftui ios16 swiftui-navigationsplitview navigationsplitview

8
推荐指数
0
解决办法
283
查看次数

ITMS-90338:非公共 API 使用处理错误 - 以前工作

将二进制文件上传到 后App Store Connect,我收到了 Apple 发来的这封电子邮件:

ITMS-90338:非公共 API 使用 - 应用程序引用 [项目名称] 中的非公共选择器:callWithArguments:、estimatedProgress、frameInfo、getVersion、initWithFrame:configuration:、isMainFrame、navigationDelegate、navigationType、setNavigationDelegate:、setProcessPool:、 targetFrame、toDouble、toString、userContentController。如果源代码中的方法名称与上面列出的私有 Apple API 匹配,则更改方法名称将有助于防止此应用程序在将来的提交中被标记。此外,请注意,上述一个或多个 API 可能位于您的应用程序附带的静态库中。如果是这样,则必须将其删除。有关更多信息,请访问技术支持信息:http://developer.apple.com/support/technical/

但是,除了内部版本号从 增加到 之外1.21.2.1这与之前上传的(并且是实时的)完全相同的二进制文件。

我已经检查了 StackOverflow 上的其他问题,例如thisthis,但通常涉及第三方 SDK。

我完全感到困惑,因为我在项目的任何地方根本不使用这些方法名称......

这是刚刚发布的 iOS 16 的问题吗?谢谢。

xcode app-store-connect ios16

7
推荐指数
1
解决办法
3561
查看次数

提取应用程序意图元数据 - 构建步骤非常慢

即使代码更改不直接触及意图,从新框架中提取应用程序意图也AppIntents需要花费大量时间。

在构建日志中,发生此步骤的原因有所不同,但主要是“文件 X 已更改”,我想知道是否可以以某种方式缓存该意图或至少仅在生产构建中提取此元数据?Simple#if debug不会阻止执行此步骤。

构建时间表

xcode xcodebuild swift ios16 appintents

7
推荐指数
1
解决办法
1188
查看次数

如何摆脱 PDFView 中的“突出显示”上下文菜单项?

我正在使用 PDFKit 渲染 PDF,并使用“UIMenuController”添加了自定义菜单。但现在从 iOS 16 开始已弃用。

\n

我使用以下代码删除 share\xe3\x80\x81lookup 菜单项:

\n
@available(iOS 13.0, *)\nopen override func buildMenu(with builder: UIMenuBuilder) {\n    builder.remove(menu: .lookup)\n    builder.remove(menu: .share)\n    builder.remove(menu: .replace)\n    super.buildMenu(with: builder)\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但是,当用户长按选择 PDF 中的文本时,无法删除“突出显示”上下文菜单。有没有办法摆脱这个菜单项?以及如何在 PDFView 中使用 UIEditMenuInteraction ?

\n

任何帮助将非常感激。

\n

ios swift ios-pdfkit ios16

7
推荐指数
1
解决办法
854
查看次数