使用 SwiftUI,我知道如何在整个屏幕上设置一个简单颜色的背景。所以只有后台忽略安全区域。但是当我想用线性渐变来做这件事时,我不知道这样做。
我的观点有一个简单的背景:
import SwiftUI
struct Settings : View {
var body: some View {
ScrollView {
VStack {
Text("Boussole")
.color(Color(red: 52/255, green: 73/255, blue: 94/255, opacity: 1.0))
.multilineTextAlignment(.leading)
.font(.system(size: 28))
.padding(.top, 15)
.frame(minWidth: 0, maxWidth: .infinity, alignment: .leading)
Toggle(isOn: .constant(false)) {
Text("Afficher le vrai nord")
.font(.system(size: 20))
.color(Color(red: 52/255, green: 73/255, blue: 94/255, opacity: 1.0))
}
.padding(.top, 10)
Toggle(isOn: .constant(true)) {
Text("Activer la vibration")
.font(.system(size: 20))
.color(Color(red: 52/255, green: 73/255, blue: 94/255, opacity: 1.0))
}
.padding(.top, 10)
.padding(.bottom, 20) …Run Code Online (Sandbox Code Playgroud) 处理示例应用程序。目标是从 Master 中的 CoreData 中提取一个列表,然后单击一个列表以转到详细信息,您可以在其中编辑信息并保存。当您在细节中编辑“名称”时,它不仅会更新细节以反映更改,而且还会反映母版上的更改。我已经尝试了很多方法来实现这一点,但到目前为止还没有找到答案。
// Code generation is turned OFF in the xcdatamodeld file
public class EntityName: NSManagedObject, Identifiable {
@NSManaged public var name: String
@NSManaged public var active: Bool
}
extension EntityName {
static func allEntityNameFetchRequest() -> NSFetchRequest<EntityName> {
let request: NSFetchRequest<EntityName> = EntityName.fetchRequest() as! NSFetchRequest<EntityName>
request.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]
return request
}
}
struct MasterView: View {
@Environment(\.managedObjectContext) var managedObjectContext
@FetchRequest(fetchRequest: EntityName.allEntityNameFetchRequest()) var allEntityNames: FetchedResults<EntityName>
var body: some View {
NavigationView {
List {
ForEach(self.allEntityNames) …Run Code Online (Sandbox Code Playgroud) 我想在 watchOS 6 上创建一个安静的简单应用程序,但是在 Apple 更改了 Xcode 11 beta 5 中的 ObjectBindig 之后,我的应用程序不再运行。我只是想在两个视图之间同步数据。
所以我用新的@Published 重写了我的应用程序,但我无法真正设置它:
class UserInput: ObservableObject {
@Published var score: Int = 0
}
struct ContentView: View {
@ObservedObject var input = UserInput()
var body: some View {
VStack {
Text("Hello World\(self.input.score)")
Button(action: {self.input.score += 1})
{
Text("Adder")
}
NavigationLink(destination: secondScreen()) {
Text("Next View")
}
}
}
}
struct secondScreen: View {
@ObservedObject var input = UserInput()
var body: some View {
VStack {
Text("Button has been pushed …Run Code Online (Sandbox Code Playgroud) 如何在 SwiftUI 中居中导航栏标题?
var body: some View {
NavigationView {
.navigationBarTitle("Todo Lists")
}
}
Run Code Online (Sandbox Code Playgroud) 多年来,这个问题已经被问过很多次了,但它在 Swift 5 中再次发生了变化,尤其是在最近的两个测试版中。
读取 JSON 文件似乎很简单:
func readJSONFileData(_ fileName: String) -> Array<Dictionary<String, Any>> {
var resultArr: Array<Dictionary<String, Any>> = []
if let url = Bundle.main.url(forResource: "file", withExtension: "json") {
if let data = try? Data(contentsOf: url) {
print("Data raw: ", data)
if let json = try? (JSONSerialization.jsonObject(with: data, options: []) as! NSArray) {
print("JSON: ", json)
if let arr = json as? Array<Any> {
print("Array: ", arr)
resultArr = arr.map { $0 as! Dictionary<String, Any> …Run Code Online (Sandbox Code Playgroud) 在 Xcode 11 beta 5 或 6 中,我现有的依赖于URLSession.DataTaskPublisher停止工作的代码。似乎DataTaskPublisher永远不会发布任何值,但我不知道为什么。
我已经尝试过.sink并.handleEvents作为订阅者。我已经与Just发布者一起测试了 .sink并确认它在那里收到了一个值。
我也试过给DataTaskPublisheraURL和给它 a URLRequest。我尝试了对 API 的请求,包括授权标头,以及对 google.com 和 apple.com 的基本请求。我尝试使用URLSession.shared和创建URLSession. 我也试过使用和不使用mapanddecode运算符。
我已经使用XCTest期望来确认测试每次都会超时,即使我给它 4 分钟的超时。
我刚刚创建了一个新的示例项目,并在根视图控制器中使用以下代码复制了问题:
override func viewDidLoad() {
super.viewDidLoad()
print("view did load")
URLSession.shared.dataTaskPublisher(for: URL(string: "http://apple.com")!)
.handleEvents(receiveSubscription: { (sub) in
print(sub)
}, receiveOutput: { (response) in
print(response)
}, receiveCompletion: { (completion) in
print(completion)
}, receiveCancel: { …Run Code Online (Sandbox Code Playgroud) 我一直在尝试将 SwiftUI 应用程序中的状态栏设置为浅色文本,因为它具有深色背景。
我在几个网站上找到了这个解决方案,但无法让它工作。
HostingController.swift
import Foundation
import UIKit
import SwiftUI
class HostingController : UIHostingController {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
Run Code Online (Sandbox Code Playgroud)
这将在类声明行返回错误,Reference to generic type 'UIHostingController' requires arguments in <...>并建议修复Insert '<<#Content: View#>>'. 应用所述修复会导致错误Use of undeclared type '<#Content: View#>'
然后,您是为了改变window.rootViewController中SceneDelegate.swift的文件。
SceneDelegate.swift
...
// Create the SwiftUI view that provides the window contents.
let contentView = Login()
// Use a UIHostingController as window root view controller.
if let windowScene …Run Code Online (Sandbox Code Playgroud) 如何List使用 Swift UI删除空行这是我的代码。
struct LandMarkList: View {
var body: some View {
NavigationView {
List(LandMarkListData) { landmark in
LandMarkRow(landmark: landmark)
}
.navigationBarTitle("List")
}
}
}
Run Code Online (Sandbox Code Playgroud) 我的应用程序中有一个奇怪的视觉错误,它仅适用于从 Xcode 11 版本运行的 iOS 13。我有一个嵌入在导航控制器中的表格视图,默认色调颜色设置为我的应用程序的主要橙色。在 iOS12 上,当您取消搜索操作时,您会看到一个后退按钮,该按钮遵循主要橙色的全局导航控制器色调。这是预期的行为。如下图所示:
但是,同样的代码在iOS13中产生了一个系统默认的蓝色后退箭头,如下图:
我已经尝试了一切来尝试覆盖那个蓝色的后退按钮,包括使用自定义操作创建一个自定义的 Bar Button Item,但这太混乱了,我只想简单地覆盖色调颜色。我已经尝试了很明显的searchController.searchBar.tintColor = UIColor(named:"Primary")searchController 是我的 UISearchController,并且我试图覆盖 self.navigationController 色调颜色。我试过本机访问 SearchBar,如下所示:UISearchBar.appearance().tintColor = UIColor(named:"Primary"),但仍然没有运气。我已经在 IB 中尝试了我能想到的所有其他方法,但我无法弄清楚如何达到这个后退按钮的色调。有人可以帮忙吗?
使用 Apple 的新命令行工具,xcrun simctl status_bar您现在可以根据需要在模拟器中设置状态栏,而无需任何 3rd 方程序,但是,我无法更改 iPad Pro(12.9-英寸)。
在帮助菜单中,它指出如果您输入有效的 ISO 日期,那么它会在相关的设备上进行调整: xcrun simctl status_bar --help
所以我输入了一个有效的 ISO 日期2016-09-18T17:34:02.666Z,但状态栏之后将如下所示:
日期未正确更改