我想知道是否有办法在 SwiftUI 中处理 Apple Pencil 事件?例如,如果您喜欢处理直接触摸,而 Apple Pencil 则不同,请说直接触摸来滚动,而说 Apple Pencil 来画线。
有一个类似的问题。
但是DragGesture,例如,似乎没有访问器可以UITouch.TouchType像属性一样区分direct,indirect或pencil。
如果没有办法,或者给我一些 UIView 的混合技术,那么哦......
谢谢,
我喜欢PKCanvasView使用底层图像使其可滚动和缩放。在不覆盖背景图像的情况下使其可滚动和缩放似乎是可以的。但是要使用底层图像制作它,我不知道如何使其工作。
由于PKCanvasView是 的子类UIScrollView,我尝试UIView在滚动视图中放置自定义内容,然后设置一个委托来指定该视图进行缩放。但是PKCanvasView的绘图图像和内容视图在缩放时不会同步它们的位置,滚动是可以的。
+ UIView (root view)
+ PKCanvasView
+ Custom UIView (underlaying image drawing)
Run Code Online (Sandbox Code Playgroud)
然后我尝试将其PKCanvasView视为另一个中的内容视图UIScrollView,将其PKCanvasView视为不可滚动视图。然后我同步PKCanvasView的绘图和容器绘图图像之间的位置。但是,我不确定是否PKCanvasView可能不是设计为在另一个下UIScrollView,手指定位标尺的行为不稳定,通过拖动保持跳跃到另一个位置。
+ UIView (root view)
+ UIScrollView
+ Custom UIView (underlaying image drawing)
+ PKCanvasView
Run Code Online (Sandbox Code Playgroud)
据我所知,大多数PKCanvasView示例代码运行良好,无需使用底层图像进行缩放。但是一旦我设置maximumZoomScale为 2 或更多。然后它不再同步绘图和底层背景图像。
谢谢
我有一个只包含字符的缓冲区
let buffer: [Int8] = ....
Run Code Online (Sandbox Code Playgroud)
然后我需要将它传递给一个process以[UInt8]为参数的函数.
func process(buffer: [UInt8]) {
// some code
}
Run Code Online (Sandbox Code Playgroud)
将[Int8]缓冲区传递给[Int8]的最佳方法是什么?我知道下面的代码可以工作,但在这种情况下,缓冲区只包含一堆字符,并且不必使用map等函数.
process(buffer.map{ x in UInt8(x) }) // OK
process([UInt8](buffer)) // error
process(buffer as! [UInt8]) // error
Run Code Online (Sandbox Code Playgroud)
我正在使用Xcode7 b3 Swift2.
说...我有一个阵列[ 1, 2, 4, 5, 6, 9].我想从中制作另一个数组.喜欢["1-2", "2-4", "4-5", "5-6", "6-9"]哪个基于前一个项目,另一个项目后跟.在Swift 3中实现这一目标的最酷方法是什么?是的,我知道如何做这种古老的时尚方式.但我想知道,如果有一个很酷或简单的方法来使用这样的map,reduce或其他人.
谢谢,
我喜欢检查给定的值是否Any.Type符合 Swift 中的协议。似乎@objc可以通过调用来检查基于的协议class_conformsToProtocol(),但我不知道如何使用纯 swift 协议进行检查。
// ObjC
@objc protocol MyObjcProtocol {
}
class MyObjcClass: NSObject, MyObjcProtocol {
}
class_conformsToProtocol(MyObjcClass.self, MyObjcProtocol.self) // true
// Swift
protocol MySwiftProtocol: AnyObject {
}
class MySwiftClass: MySwiftProtocol {
}
class_conformsToProtocol(MySwiftClass.self, MySwiftProtocol.self) // error
Run Code Online (Sandbox Code Playgroud)
如果是实例的情况,我可以检查if let object = object as? MySwiftProtocol { ... }方法的类型,但Any.Type不可能是这种情况。
谢谢...