小编Gar*_*abo的帖子

pageViewController上的背景图像反向重叠

我有一个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)

ios uipageviewcontroller swift

4
推荐指数
1
解决办法
2232
查看次数

HKSampleQuery 只会返回过去 7 天的值?

这是一个 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)

ios swift healthkit apple-watch watchos-4

4
推荐指数
1
解决办法
2521
查看次数

Swift Charts:.chartYScale 似乎只能以 100 为增量工作?

考虑到这是一个心率图表,我试图将图表的 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)

swiftui swiftui-charts

4
推荐指数
1
解决办法
3374
查看次数

查找字符串中引号内的字符

我正在尝试提取字符串中引号中的部分,即“"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)

string swift swift3

3
推荐指数
1
解决办法
1945
查看次数

“BGAppRefreshTask”与“BGProcessingTask”理解时序

我试图理解Apple文档中处理\xe2\x80\x9c 需要几分钟 \xe2\x80\x9d 的过程,而刷新他们说的BGAppRefreshTask过程之间的区别和处理位置BGProcessingTask的 \xe2\x80\x9cshort 请求之间处理位置task.\xe2\x80\x9d 我正在 HealthKit 中迭代锻炼,这需要不到一分钟的时间,所以我应该使用 BGAppRefreshTask 吗?

\n

background ios swift background-task

3
推荐指数
1
解决办法
2488
查看次数

如何正确打印结构?

我正在尝试在我的用户结构中存储一组存储结构,但我无法正确打印它.

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)

struct swift

2
推荐指数
1
解决办法
2423
查看次数

哪里最好使用Watch Connectivity调用updateApplicationContext?

一些详细介绍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应用程序中的数据,所以我并不需要立即发送数据,我只是想送它时,应用程序加载或进入后台......为此我做了updateApplicationContextdidFinishLaunchingdidEnterBackground.. .然后我的监视接口控制器中的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以前打电话给activiateSessionextensionDelegateappliciationDidFinishLaunching

import WatchConnectivity

protocol DataSourceChangedDelegate {
    func dataSourceDidUpdate(dataSource: DataSource)
}


class WatchSessionManager: NSObject, WCSessionDelegate { …
Run Code Online (Sandbox Code Playgroud)

ios swift apple-watch watchkit watchconnectivity

2
推荐指数
1
解决办法
1591
查看次数

使用 Swift 3.0 调用 Google Cloud Natural Language API

我正在尝试根据此代码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)

nsurlrequest ios google-cloud-platform swift

2
推荐指数
1
解决办法
1980
查看次数

WKWebView的(beta)takeSnapshot方法,如何实现?

我注意到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)

ios swift wkwebview xcode9-beta

2
推荐指数
1
解决办法
1380
查看次数

如何将 UIHostingController 的背景颜色设置为清除?

我需要能够查看我的 SwiftUI 视图以及呈现它们的 UIHosting 控制器,以便看到它们下面的背景图像。下面的代码仍然在我的 SwiftUI 视图下显示一个白色矩形。Paul Hudson要使用 edgeIgnoringSafeArea 但我不能使用它,因为我的 SwiftUIView 嵌入在更大的 UI 方案中。有什么办法可以使我看到的这个白色矩形清晰?

    var body: some View {
          ZStack {
            VStack {
                 //omitted
              }
        }.background(Color.clear)
   }
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui uihostingcontroller zstack

2
推荐指数
1
解决办法
908
查看次数