我有一个pageViewController显示每个索引的背景图像.它可以从左向右(向前)轻扫,但是当您反向滑动时,背景图像会相互重叠.在我实现背景图像之前,每个VC上的UI工作正常和反向,所以我知道它是背景图像.此外,如果我改为page curl而不是scroll在我的storyboard反向工作正常,只是不起作用scroll.这显然是一个已知的错误(从UIPageViewController中删除视图控制器)但是我需要一个Swift解决方案.
pageviewController:
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
guard
let currentPageViewController = viewController as? SinglePageViewController,
let currentIndex = indexOfForecast(currentPageViewController.forecast!) as? Int where currentIndex != 0 else { return nil } //fixed bug where index was -0 only on scroll
return viewControllerAtIndex(currentIndex - 1)
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
guard
let lastForecast = forecasts?.last,
let currentPageViewController = viewController as? SinglePageViewController, …Run Code Online (Sandbox Code Playgroud) 这是一个 WatchOS 应用程序。通过测试,似乎这段代码只会返回我手动添加到健康应用程序中不到 1 周的任何体重值。这是故意的吗?绕路?
func getUserBodyMass(completion: @escaping (HKQuantitySample) -> Void) {
guard let weightSampleType = HKSampleType.quantityType(forIdentifier: .bodyMass) else {
print("Body Mass Sample Type is no longer available in HealthKit")
return
}
//1. Use HKQuery to load the most recent samples.
let mostRecentPredicate = HKQuery.predicateForSamples(withStart: Date.distantPast,
end: Date(),
options: [])
let sortDescriptor = NSSortDescriptor(key: HKSampleSortIdentifierStartDate,
ascending: false)
let limit = 1
let sampleQuery = HKSampleQuery(sampleType: weightSampleType,
predicate: mostRecentPredicate,
limit: limit,
sortDescriptors: [sortDescriptor]) { (query, samples, error) in
//2. Always dispatch …Run Code Online (Sandbox Code Playgroud) 考虑到这是一个心率图表,我试图将图表的 Y 最大刻度设置为 210 (bpm),例如,但.chartYScale(domain: 0 ... 210)只有当我输入 200 或 300 时,它似乎才能正确缩放,中间的任何值都不起作用。这是故意的还是错误?
import SwiftUI
import Charts
import HealthKit
struct TestYAxisRangeChart: View {
let heartRateData = [80.0, 90.0, 120.0, 150.0, 160.0, 140.0, 125.0, 110.0, 88.0]
var body: some View {
Chart {
ForEach(heartRateData, id: \.self) { sample in
LineMark(
x: .value("", heartRateData.firstIndex(of: sample)!),
y: .value("HR", sample))
.foregroundStyle(Color.red)
}
}
.chartYAxis{
AxisMarks(position: .leading)
}
.frame(height: 300)
.padding(.horizontal)
.chartYScale(domain: 0 ... 210)
}
}
struct TestYAxisRangeChart_Previews: PreviewProvider {
static var previews: …Run Code Online (Sandbox Code Playgroud) 我正在尝试提取字符串中引号中的部分,即“"Rouge One" is an awesome movie我想提取 Rouge One”。
这是我到目前为止所拥有的,但不知道从这里去哪里:我创建了文本的副本,以便我可以删除第一个引号,以便我可以获得第二个引号的索引。
if text.contains("\"") {
guard let firstQuoteMarkIndex = text.range(of: "\"") else {return}
var textCopy = text
let textWithoutFirstQuoteMark = textCopy.replacingCharacters(in: firstQuoteMarkIndex, with: "")
let secondQuoteMarkIndex = textCopy.range(of: "\"")
let stringBetweenQuotes = text.substring(with: Range(start: firstQuoteMarkIndex, end: secondQuoteMarkIndex))
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的用户结构中存储一组存储结构,但我无法正确打印它.
struct users {
var name: String = ""
var stores: [store]
}
struct store {
var name: String = ""
var clothingSizes = [String : String]()
}
var myFirstStore = store(name: "H&M", clothingSizes: ["Shorts" : "Small"])
var mySecondStore = store(name: "D&G", clothingSizes: ["Blouse" : "Medium"])
var me = users(name: "Me", stores: [myFirstStore, mySecondStore])
println(me.stores)
Run Code Online (Sandbox Code Playgroud) 一些详细介绍Watch Connectivity的好博文(http://www.kristinathai.com/watchos-2-tutorial-using-application-context-to-transfer-data-watch-connectivity-2/和http:// natashatherobot .com/watchconnectivity-application-context /)使用简单的应用程序示例,当您点击iPhone上的UI时,将数据发送到手表.
我的应用程序仅列出从我的iPhone应用程序中的数据,所以我并不需要立即发送数据,我只是想送它时,应用程序加载或进入后台......为此我做了updateApplicationContext的didFinishLaunching和didEnterBackground.. .然后我的监视接口控制器中的dataSource委托非常发现触发...特别是只能在模拟器上加载,而不会在设备上加载.是否有更好的时间和地点推送信息?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
WatchSessionManager.sharedManager.startSession()
do {
try WatchSessionManager.sharedManager.updateApplicationContext(["peopleDict" : peopleDict])
} catch {
print(error)
}
return true
}
func applicationDidEnterBackground(application: UIApplication) {
do {
try WatchSessionManager.sharedManager.updateApplicationContext(["peopleDict" : peopleDict])
} catch {
print(error)
}
}
Run Code Online (Sandbox Code Playgroud)
下面是我WatchSessionManager以前打电话给activiateSession我extensionDelegate的appliciationDidFinishLaunching
import WatchConnectivity
protocol DataSourceChangedDelegate {
func dataSourceDidUpdate(dataSource: DataSource)
}
class WatchSessionManager: NSObject, WCSessionDelegate { …Run Code Online (Sandbox Code Playgroud) 我正在尝试根据此代码https://cloud.google.com/natural-language/reference/rest/v1/documents in Swift对 Google 的 Cloud Natural Language API 提出请求,但我不太明白语法对吗?
import Foundation
import SwiftyJSON
class GoogleNaturalLanguageParser {
let session = URLSession.shared
var googleAPIKey = "XXX"
var googleURL: URL {
return URL(string: "https://language.googleapis.com/v1/documents:analyzeEntities?key=\(googleAPIKey)")!
}
//TODO: Add document
private func createRequest(with text: String, handler: @escaping (String) -> Void) {
// Create our request URL
var request = URLRequest(url: googleURL)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue(Bundle.main.bundleIdentifier ?? "", forHTTPHeaderField: "X-Ios-Bundle-Identifier")
// Build our API request
let jsonRequest = [
"requests": [ …Run Code Online (Sandbox Code Playgroud) 我注意到WKWebView文档现在列出了一个takeSnapshot被iOS 11和macOS 10.13及更高版本(Xcode 9 beta)支持的方法.
还有人玩过还是实现过?我试图让它在操场上工作,但我不知道从哪里开始?这是一种方法WKWebView吗?
我的代码:
import UIKit
import PlaygroundSupport
import WebKit
let frame = CGRect(x: 0, y: 0, width: 800, height:600)
let web = WKWebView(frame: frame)
let rq = URLRequest(url: NSURL(string: "http://apple.com")! as URL)
web.load(rq)
PlaygroundPage.current.liveView = web
PlaygroundPage.current.needsIndefiniteExecution = true
//Take snapshot?
Run Code Online (Sandbox Code Playgroud) 我需要能够查看我的 SwiftUI 视图以及呈现它们的 UIHosting 控制器,以便看到它们下面的背景图像。下面的代码仍然在我的 SwiftUI 视图下显示一个白色矩形。Paul Hudson说要使用 edgeIgnoringSafeArea 但我不能使用它,因为我的 SwiftUIView 嵌入在更大的 UI 方案中。有什么办法可以使我看到的这个白色矩形清晰?
var body: some View {
ZStack {
VStack {
//omitted
}
}.background(Color.clear)
}
Run Code Online (Sandbox Code Playgroud) swift ×9
ios ×7
apple-watch ×2
swiftui ×2
background ×1
healthkit ×1
nsurlrequest ×1
string ×1
struct ×1
swift3 ×1
watchkit ×1
watchos-4 ×1
wkwebview ×1
xcode9-beta ×1
zstack ×1