我正在寻找一种方法来删除 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) 我正在尝试测试当前 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 16 上的锁屏小部件上出现的“充满活力”的 iOS 16 效果,因为我的应用程序应该能够在用户创建过程中显示小部件的预览。
示例:请参阅下面中央屏幕上的 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) 最近安装 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 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 …
当我从具有内联显示模式的推送视图中弹出时,最初较大的父视图的显示模式更改为内联,并且用户必须向下滚动标题才能恢复到其原始模式。
问:如何确保设置视图上始终显示大标题?
我使用的是 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
将 iPhone 上的操作系统版本更新到 iOS 16 后,我在 Xcode 中收到消息,告知物理设备上的版本安装不受支持,因此我无法在该设备上启动该应用程序:(
我们正在使用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) 我正在下面的示例代码中寻找以下错误的解决方案。我尝试使用 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
我已经开发(并使用)了一个 iOS 应用程序多年,但我不想将其发布到 App Store。在 iOS 16 之前,开发/分发一切都很好,我认为我需要每年发布一次新版本才能保持其运行(我猜是因为证书的有效期为 1 年,这很好)
但自 iOS 16 起,需要启用“开发者模式”才能运行该应用程序。如果我是唯一一个使用该应用程序的人,那就没问题,但还有另外 2 个人也使用该应用程序,我真的不希望他们启用此“开发人员模式”只是为了运行我的应用程序。对我个人来说这没问题,因为我是一名开发人员,我知道这意味着什么
有谁知道是否有可能允许在 iOS 16 中运行应用程序而无需启用“开发者模式”并且不将应用程序发布到 App Store?
到目前为止,我尝试过的是通过配置文件将发行版从“开发”更改为“临时”,但这不起作用,而且我真的不明白有什么区别,因为限制似乎很相似。难道苹果犯了一个错误,认为这不适用于“Ad Hoc”并且会在不久的将来“修复”吗?我知道在 iOS 16 Beta 版本之一中,Testflight-Builds 也发生了同样的事情,后来在稳定版本中修复了 Testflight 目前是我拥有的最佳选择之一,但令我困扰的是 a) 你需要一个单独的应用程序为此,b) 构建版本仅在 90 天内有效
ios16 ×10
ios ×5
swiftui ×5
swift ×4
iphone ×2
xcode ×2
appintents ×1
barcode ×1
datepicker ×1
drag ×1
effect ×1
gs1-qr-code ×1
list ×1
padding ×1
react-native ×1
widget ×1