小编l -*_*c l的帖子

如何打印所有WKWebView On和Offscreen内容OSX和iOS

这个问题是关于打印WKWebView的所有内容(包括屏幕外内容).目前(仍然是iOS 10.2或OSX 10.12)没有工作解决方案,并且Stackoverflow上没有任何假设的解决方案.如果您已经验证了可以打印屏幕内容,那么只在这里提供答案,如果您这样做,则提供工作示例代码.

我正在尝试在OSX 10.10或更高版本上打印WKWebViewWebView的所有内容(当前在10.11.2上运行).例如,一个宽的html表,其中列不在视图范围内并且在右边.早期版本的OSX会自动分页并正确打印所有html.

我已尝试使用Stackoverflow和其他地方提供的解决方案.所有人基本上都说同样的东西是打印出来的documentView那样:

[[NSPrintOperation printOperationWithView:_webView.mainFrame.frameView.documentView printInfo:pInfo] runOperation];
Run Code Online (Sandbox Code Playgroud)

这在10.10中停止了WKWebViewWebView的工作.如果你这样做:

    [[NSPrintOperation printOperationWithView:_wkWebView printInfo:pInfo] runOperation];
Run Code Online (Sandbox Code Playgroud)

你得到分页,但打印输出包括滚动条WebView,另一个WKWebView给你空白页.

我在Apple文档中找不到关于在OSX上打印WKWebView的任何内容.我也找不到任何OSX特定的答案,而不是iOS.

有没有人知道如何在OSX上打印这些?

更新:这是WebView [雷达:23159060](仍然打开2/2018)中的一个错误,WKWebView甚至似乎无法解决OSX上的打印问题.在网上检查了这个类的开源之后,我看到所有与打印有关的类都在一个只支持平台的条件编译块中:iOS.

UPDATE Part Deux:令人惊讶的是,这个荒谬的bug存在于这个类的所有实现中,包括iOS上的那些!尽管文档声明在支持iOS 8或更高版本的应用程序中使用此(并且只有此类),但我发现这仍然没有在这个较晚的日期得到解决,这一点很荒谬.现在,在iOS或OSX上打印WebView的所有屏幕和屏幕外内容是不可能的.Apple失败了.是时候搞定了!我们都知道史蒂夫会对此说些什么......

注意:另外,我认为这个问题的根本原因还在于无法将WKWebView的所有内容保存为图像.曾经有一些技术可以与UIWebView一起使用,以将WebView的整个屏幕内容和屏幕外内容保存到图像中.我还没有找到一个有效的解决方案.

printing macos ios osx-yosemite wkwebview

25
推荐指数
1
解决办法
2008
查看次数

如何将 Swift Package Manager 与私有存储库一起使用?

如何使用存储在私有存储库中的依赖项的 Swift 包管理器?

添加一个usernamepassword可以在功能上工作:

let package = Package(
  name: "MyPackage",
  dependencies: [
    .package(url: "https://username:password@gitlab.com/me/MyPackage.git", .branch("develop"))     
  ]
)
Run Code Online (Sandbox Code Playgroud)

但是,该username:password方法存在问题,包括(但不限于)Package.swift指定用户名,以及将纯文本凭据放入存储库。

理想情况下,解决方案应该是:

  1. 不在存储库中存储任何纯文本或令牌凭据。
  2. 允许每个团队成员拥有自己的凭据。

git swift-package-manager

17
推荐指数
3
解决办法
9888
查看次数

为`swift package generate-xcodeproj`设置macOS目标?

有没有办法为swift package generate-xcodeproj生成Xcode项目设置macOS目标?

例如,将default target设置为"x86_64-apple-macosx10.12".

背景

目前,Xcode 9.2 Swift工具链在命令行上显示以下版本:

swift --version
# Apple Swift version 4.0.3 (swiftlang-900.0.74.1 clang-900.0.39.2)
# Target: x86_64-apple-macosx10.9
swift package --version
# Apple Swift Package Manager - Swift 4.0.0-dev (swiftpm-13752)
Run Code Online (Sandbox Code Playgroud)

结果swift package generate-xcodeproj是一个Xcode项目,macOS目标为10.10.

注意:生成的Xcode 10.10目标是swift命令行编译器目标10.9的一个版本.因此,显然,默认的macOS目标是swiftswift package generate-xcodeproj彼此独立确定的.

到目前为止,任何解决方案Package.swift,--xcconfig-overrides或别的东西一直难以捉摸.

xcode swift swift-package-manager

9
推荐指数
2
解决办法
2168
查看次数

如何使用 Swift Package Manager 更新单个依赖项?

Package.swift我以以下形式存在本地依赖性

.package(url: "file:///Users/User/Documents/.../my-dependency", .branch("master")),
Run Code Online (Sandbox Code Playgroud)

本地依赖项正在开发中。我希望更新到最新版本,但我无法找到一种方法来仅更新该包,而无需拉取和重建所有其他项目依赖项。到目前为止,每次我对本地依赖项进行小更改时(假设我什至可以访问互联网),我都必须拉取并重建 Vapor 和 Fluent。

当我运行时,swift package update --help我看到有一条指令:

POSITIONAL ARGUMENTS:
packages        The packages to update (optional)
Run Code Online (Sandbox Code Playgroud)

然而,每当我尝试类似swift package update my-dependencyor 的东西时swift package update My-Dependency,它都会做同样的事情并重新拉动所有内容。

我该如何更新这个单一依赖项?假设我最终确实想要更新所有其他第三方依赖项,我如何告诉 SPM 在重新拉取和重建包之前检查 GitHub 上的包是否有实际更改?

swift swift-package-manager vapor

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

如何在 switch case 模式语句中使用 Swift 文字正则表达式?

如何在 switch case 模式语句中使用 Swift 文字正则表达式?

根据 WWDC 2022 演示幻灯片中的示例,以下内容预计可以编译并运行正常:

import Foundation
import RegexBuilder

switch "abc" {
    case /\w+/:
        print("matched!")
    default:
        print("not matched.")
}
Run Code Online (Sandbox Code Playgroud)

但是,会产生以下错误:

类型的表达式模式Regex<Substring>无法匹配类型的值String

是否可以switch case通过某种方式修改带有 Swift 正则表达式文字表达式的语句以使其正常运行?如何在 switch case 模式语句中使用新的 Swift 5.7 正则表达式功能?

regex switch-statement swift swift5.7

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

地图中的 SF 符号不会应用颜色

我正在尝试使用 UIKit 设置地图,使用 SF 符号作为注释。到目前为止,一切都很好。

问题是符号是黑色的,我想将颜色更改为白色。

annotationView.image = UIImage(systemName: "23.circle.fill")!.withTintColor(.white, renderingMode: .alwaysTemplate)
Run Code Online (Sandbox Code Playgroud)

不做这项工作。事实上,如果我使用普通的 Pin 图,我就可以改变颜色。

它只是不适用于 SF Symbols。

这是我的代码

annotationView.image = UIImage(systemName: "23.circle.fill")!.withTintColor(.white, renderingMode: .alwaysTemplate)
Run Code Online (Sandbox Code Playgroud)

我还尝试使用以下代码通过 UIImage 扩展更改它:

import SwiftUI
import MapKit
import UIKit

struct MapView: UIViewRepresentable {



    func makeUIView(context: Context) -> MKMapView {
        let myMapView = MKMapView(frame: .zero)
        return myMapView
    }

    func updateUIView(_ view: MKMapView, context: Context) {
        let coordinate = CLLocationCoordinate2D(latitude: 49.289912, longitude: 19.764172)
        let span = MKCoordinateSpan(latitudeDelta: 0.027, longitudeDelta: 0.027)
        let region = MKCoordinateRegion(center: coordinate, span: span) …
Run Code Online (Sandbox Code Playgroud)

uikit mapkit swift swiftui sf-symbols

6
推荐指数
1
解决办法
1640
查看次数

PythonKit 错误“未找到 Python 库。使用 Python 库的路径设置 PYTHON_LIBRARY 环境变量”

我使用 PythonKit 和 XCode 从 swift 代码调用 spaCy API。从 Home-brew 安装了 PythonKit,将其导入到我的项目中并且构建得很好;但是,在运行时我收到错误:

Python library not found. Set the PYTHON_LIBRARY environment variable with the path to a Python library.
Run Code Online (Sandbox Code Playgroud)

所以我编译了PythonTools(在PythonKit目录中,运行swift package generate-xcodeproj并打开PythonKit.xcodeproj文件)来查看它会找到Python库的哪些路径:

/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python37.zip
/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7
/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload
/Users/fernandabrum/Library/Python/3.7/lib/python/site-packages
/usr/local/lib/python3.7/site-packages
Run Code Online (Sandbox Code Playgroud)

如果我的系统中存在 Python 库,为什么会出现“未找到 Python 库”的错误?我究竟做错了什么?

OBS.:我还尝试设置 PYTHON_LIBRARYexport PYTHON_LIBRARY=和上面找到的路径,但不成功。

提前致谢!

python xcode ios spacy swift-pythonkit

6
推荐指数
1
解决办法
4408
查看次数

NSViewController-关闭窗口-Swift-Storyboard

单击此窗口上安装的“继续”按钮后,我找不到关闭主窗口的正确方法。我尝试将此按钮连接到检查器的“ proceedclose”选项。我也尝试在代码中插入以下行:

import Cocoa
class ViewController: NSViewController {
    ...
    @IBAction func Envoi(sender: NSButton) {    
        self.view.window!.close()
    }
}
Run Code Online (Sandbox Code Playgroud)

它们都不起作用,没有任何反应,也没有错误报告。有人可以帮我解决吗?

xcode cocoa swift

5
推荐指数
2
解决办法
4974
查看次数

如何从 OSX Swift 命令行工具或 shebang 脚本文件显示窗口?

如何从 OSX Swift 命令行工具或 shebang 脚本文件显示窗口?

理想情况下,不使用其他文件。没有故事板。没有西布。

一个示例是具有单个 Swift 文件的 OS X 命令行工具 Xcode 项目。

import Cocoa // AppKit, CoreData, Foundation

let arguments = Process.arguments 

if (arguments.contains("usegui")) {
    // show arguments in a window with text field and dismiss button
    // GIVEN: some NSWindow
    let aTextField = NSTextField(frame: NSMakeRect(25, 320, 180, 24))
    aTextField.stringValue = arguments.description
    let mask = NSTitledWindowMask | NSClosableWindowMask
    let aWindow = NSWindow(
        contentRect: NSMakeRect(0, 0, 400, 210), 
        styleMask: mask, 
        backing: NSBackingStoreType.Buffered, 
        `defer`: false)
    aWindow.contentView!.addSubview(aTextField)
    // add button …
Run Code Online (Sandbox Code Playgroud)

macos shebang swift

5
推荐指数
1
解决办法
1536
查看次数

在 generate-xcodeproj 之后,哪些步骤可以将 SPM 生成的 Xcode 项目静态链接为另一个 Xcode 项目中的子项目?

动机:能够生成一个基于 SPM 的静态库 Xcode 项目会很有用,该项目可以从另一个(不是基于 SPM 的)Xcode 项目中引用generate-xcodeproj似乎是一种合理的尝试方法,但是,generate-xcodeprojcreates 是一个动态框架项目,而不是一个静态库项目。

问题:在 之后generate-xcodeproj,需要哪些 Xcode 步骤(对于 Xcode 9 和 Swift 4)将type: .staticSwift 包库静态链接到一个简单的命令行二进制可执行文件中……类似于相应的swift build?

换句话说,如何最终得到一个 SPM 生成的静态库 Xcode 项目,它可以用作非 SPM Xcode 项目中的子项目。

目标:使用 Xcode 生成静态链接的可执行文件,就像swift build从命令行生成的内容一样……为同一个模块产品。

问题是generate-xcodeproj生成的项目创建了一个动态链接的产品(非预期),同时swift build生成了一个静态链接的产品(如预期的)。

示例:考虑两个 Swift Manager Packages (SPM) 包:

  1. 静态库:TinkerEvalStaticLib? swift package init --type library作为起点。
  2. 命令行可执行文件:TinkerEvalStaticCli? swift package …

xcode swift swift-package-manager

5
推荐指数
1
解决办法
686
查看次数