这个问题是关于打印WKWebView的所有内容(包括屏幕外内容).目前(仍然是iOS 10.2或OSX 10.12)没有工作解决方案,并且Stackoverflow上没有任何假设的解决方案.如果您已经验证了可以打印屏幕内容,那么只在这里提供答案,如果您这样做,则提供工作示例代码.
我正在尝试在OSX 10.10或更高版本上打印WKWebView或WebView的所有内容(当前在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中停止了WKWebView或WebView的工作.如果你这样做:
[[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的整个屏幕内容和屏幕外内容保存到图像中.我还没有找到一个有效的解决方案.
如何使用存储在私有存储库中的依赖项的 Swift 包管理器?
添加一个username和password可以在功能上工作:
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指定用户名,以及将纯文本凭据放入存储库。
理想情况下,解决方案应该是:
有没有办法为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目标是swift和swift package generate-xcodeproj彼此独立确定的.
到目前为止,任何解决方案Package.swift,--xcconfig-overrides或别的东西一直难以捉摸.
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 上的包是否有实际更改?
如何在 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 正则表达式功能?
我正在尝试使用 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) 我使用 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=和上面找到的路径,但不成功。
提前致谢!
单击此窗口上安装的“继续”按钮后,我找不到关闭主窗口的正确方法。我尝试将此按钮连接到检查器的“ proceedclose”选项。我也尝试在代码中插入以下行:
import Cocoa
class ViewController: NSViewController {
...
@IBAction func Envoi(sender: NSButton) {
self.view.window!.close()
}
}
Run Code Online (Sandbox Code Playgroud)
它们都不起作用,没有任何反应,也没有错误报告。有人可以帮我解决吗?
如何从 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) 动机:能够生成一个基于 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) 包:
TinkerEvalStaticLib? 以swift package init --type library作为起点。TinkerEvalStaticCli? 以swift package …