小编Kaz*_*awa的帖子

有没有办法在 SwiftUI 中处理和/或区分 Apple Pencil 和直接触摸?

我想知道是否有办法在 SwiftUI 中处理 Apple Pencil 事件?例如,如果您喜欢处理直接触摸,而 Apple Pencil 则不同,请说直接触摸来滚动,而说 Apple Pencil 来画线。

有一个类似的问题。

如何使用 SwiftUI 处理屏幕触摸事件?

但是DragGesture,例如,似乎没有访问器可以UITouch.TouchType像属性一样区分direct,indirectpencil

如果没有办法,或者给我一些 UIView 的混合技术,那么哦......

谢谢,

uitouch ios apple-pencil swiftui

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

带有底层背景图像的可缩放 PKCanvasView

我喜欢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 或更多。然后它不再同步绘图和底层背景图像。

谢谢

ios swift pencilkit

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

如何在Swift中将[Int8]转换为[UInt8]

我有一个只包含字符的缓冲区

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.

swift

4
推荐指数
2
解决办法
2257
查看次数

最酷的方式结合Swift 3中的项目

说...我有一个阵列[ 1, 2, 4, 5, 6, 9].我想从中制作另一个数组.喜欢["1-2", "2-4", "4-5", "5-6", "6-9"]哪个基于前一个项目,另一个项目后跟.在Swift 3中实现这一目标的最酷方法是什么?是的,我知道如何做这种古老的时尚方式.但我想知道,如果有一个很酷或简单的方法来使用这样的map,reduce或其他人.

谢谢,

swift

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

检查 Any.Type 是否符合 Swift 中的协议

我喜欢检查给定的值是否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不可能是这种情况。

谢谢...

swift swift-protocols

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