[iPad]PencilKit教程7、PKStrokePath:一种结构,可捕获笔划的各个组成部分,并提供沿笔划路径查找和内插点的方法

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(let_us_code)
➤博主域名:https://www.zengqiang.org
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/14089366.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

PencilKit(Swift)示例代码:点击下载

class PKCanvasView//捕捉Apple Pencil输入并在iOS应用程序中显示渲染结果的视图。
struct PKDrawing//表示画布视图捕获的绘图信息的结构。
struct PKStroke//表示在画布上绘制的笔划的路径、边界和其他属性的结构。
struct PKStrokePath//一种结构,它捕获笔划的组成部分,并提供沿笔划路径查找和插值点的方法。
struct PKStrokePoint//表示沿笔划路径的特定点的属性的结构。
struct PKInk//一种表示墨水的结构,它指定墨水的类型、颜色和宽度。

定义

struct PKStrokePath

创建新的笔画路径

init()

创建一个空的笔触路径。

init<T>(controlPoints: T, creationDate: Date)

使用三次B样条曲线控制点和指定的日期创建笔划路径。
获取笔划路径属性

var count: Int

集合中元素的数量。

var creationDate: Date

此笔划路径的创建日期和时间。

var endIndex: Int

集合中最后一项的索引。

var first: PKStrokePoint?

集合的第一个元素。

var indices: Range<Int>

有效的索引以升序对集合进行下标。

var isEmpty: Bool

一个布尔值,指示集合是否为空。

var last: PKStrokePoint?

集合的最后一个元素。

var startIndex: Int

集合中第一项的索引。

var underestimatedCount: Int

小于或等于集合中元素数量的值。
获取行程路径数据

var lazy: LazySequence<PKStrokePath>

包含与该序列相同的元素的序列,但是在其上懒惰地实现了某些操作,例如map和filter。

var publisher: Publishers.Sequence<PKStrokePath, Never>

笔划路径序列的发布者。
访问和插值点

func interpolatedPoints(in: ClosedRange<CGFloat>?, by: PKStrokePath.InterpolatedSlice.Stride) -> PKStrokePath.InterpolatedSlice

使用您指定的浮点范围和跨度返回切片曲线上的点。

func interpolatedLocation(at: CGFloat) -> CGPoint

返回浮点参数值的曲线上点。

func interpolatedPoint(at: CGFloat) -> PKStrokePoint

返回提供的浮点参数的曲线上点。

subscript(PKStrokePath.Index) -> PKStrokePoint

在提供的索引处访问笔划点。

subscript<R>(R) -> Slice<PKStrokePath>

访问范围表达式指定的集合元素的连续子范围。

subscript((UnboundedRange_) -> ()) -> Slice<PKStrokePath>
subscript(Range<Int>) -> Slice<PKStrokePath>

访问集合元素的连续子范围。
配套类型

struct PKStrokePath.InterpolatedSlice

表示笔划点的插值切片的结构,该笔划点在此笔划数据的范围内具有特定步幅。

typealias PKStrokePath.Element
typealias PKStrokePath.Index
typealias PKStrokePath.Indices
typealias PKStrokePath.Iterator
typealias PKStrokePath.SubSequence

实例方法

func allSatisfy((PKStrokePoint) -> Bool) -> Bool

返回一个布尔值,该值指示序列中的每个元素是否满足给定谓词。

func compactMap<ElementOfResult>((PKStrokePoint) -> ElementOfResult?) -> [ElementOfResult]

返回一个数组,其中包含nil对该序列的每个元素调用给定转换的非结果。

func contains(where: (PKStrokePoint) -> Bool) -> Bool

返回一个布尔值,该值指示序列是否包含满足给定谓词的元素。

func difference<C>(from: C, by: (C.Element, PKStrokePoint) -> Bool) -> CollectionDifference<PKStrokePoint>

使用给定谓词作为等效测试,返回从给定集合生成此集合的有序元素所需的差异。

func distance(from: Int, to: Int) -> Int

返回两个索引之间的距离。

func drop(while: (PKStrokePoint) -> Bool) -> Slice<PKStrokePath>

通过在predicate返回时跳过元素true并返回其余元素来返回子序列。

func dropFirst(Int) -> Slice<PKStrokePath>

返回一个子序列,其中包含给定数量的初始元素。

func dropLast(Int) -> Slice<PKStrokePath>

返回一个子序列,其中包含除指定数量之外的所有最终元素。

func elementsEqual<OtherSequence>(OtherSequence, by: (PKStrokePoint, OtherSequence.Element) -> Bool) -> Bool

返回一个布尔值,该布尔值使用给定的谓词作为等效性检验来指示此序列和另一个序列是否包含相同顺序的等效元素。

func enumerated() -> EnumeratedSequence<PKStrokePath>

返回对(n,x)对的序列,其中n表示从零开始的连续整数,x表示该序列的元素。

func filter((PKStrokePoint) -> Bool) -> [PKStrokePoint]

返回一个数组,该数组按顺序包含满足给定谓词的序列中的元素。

func first(where: (PKStrokePoint) -> Bool) -> PKStrokePoint?

返回满足给定谓词的序列的第一个元素。

func firstIndex(where: (PKStrokePoint) -> Bool) -> Int?

返回集合的元素满足给定谓词的第一个索引。

func flatMap<SegmentOfResult>((PKStrokePoint) -> SegmentOfResult) -> [SegmentOfResult.Element]

返回一个包含此序列的每个元素的调用给定转换的串联结果的数组。

func flatMap<ElementOfResult>((PKStrokePoint) -> ElementOfResult?) -> [ElementOfResult]

不推荐使用

func forEach((PKStrokePoint) -> Void)

以与for-in循环相同的顺序在序列中的每个元素上调用给定的闭包。

func formIndex(inout Int, offsetBy: Int)

将给定索引偏移指定距离。

func formIndex(inout Int, offsetBy: Int, limitedBy: Int) -> Bool

将给定索引偏移指定距离,或者使其等于给定限制索引。

func formIndex(after: inout Int)

将给定索引替换为其后继。

func formIndex(before: inout Int)

将给定索引替换为其前身。

func index(Int, offsetBy: Int) -> Int

返回一个索引,该索引是距给定索引的指定距离。

func index(Int, offsetBy: Int, limitedBy: Int) -> Int?

返回一个索引,该索引是距给定索引的指定距离,除非该距离超出给定的限制索引。

func index(after: Int) -> Int

返回给定索引之后的位置。

func index(before: Int) -> Int

返回给定索引之后的位置。

func last(where: (PKStrokePoint) -> Bool) -> PKStrokePoint?

返回满足给定谓词的序列的最后一个元素。

func lastIndex(where: (PKStrokePoint) -> Bool) -> Int?

返回与给定谓词匹配的集合中最后一个元素的索引。

func lexicographicallyPrecedes<OtherSequence>(OtherSequence, by: (PKStrokePoint, PKStrokePoint) -> Bool) -> Bool

使用给定的谓词比较元素,返回一个布尔值,该值指示该序列是否按字典顺序(词典)在另一个序列之前。

func makeIterator() -> IndexingIterator<PKStrokePath>

返回一个遍历集合元素的迭代器。

func map<T>((PKStrokePoint) -> T) -> [T]

返回一个数组,其中包含将给定闭包映射到序列的元素上的结果。

func max(by: (PKStrokePoint, PKStrokePoint) -> Bool) -> PKStrokePoint?

使用给定的谓词作为元素之间的比较,返回序列中的最大元素。

func min(by: (PKStrokePoint, PKStrokePoint) -> Bool) -> PKStrokePoint?

使用给定的谓词作为元素之间的比较,返回序列中的最小元素。

func prefix(Int) -> Slice<PKStrokePath>

返回一个子序列,直到指定的最大长度,该子序列包含集合的初始元素。

func prefix(through: Int) -> Slice<PKStrokePath>

返回从集合开始到指定位置的子序列。

func prefix(upTo: Int) -> Slice<PKStrokePath>

返回从集合开始到指定位置(但不包括指定位置)的子序列。

func prefix(while: (PKStrokePoint) -> Bool) -> Slice<PKStrokePath>

返回包含初始元素的子序列,直到predicate返回false并跳过其余元素。

func randomElement() -> PKStrokePoint?

返回集合的随机元素。

func randomElement<T>(using: inout T) -> PKStrokePoint

使用给定的生成器作为随机性的源,返回集合的随机元素。

func reduce<Result>(Result, (Result, PKStrokePoint) -> Result) -> Result

返回使用给定的闭包组合序列元素的结果。

func reduce<Result>(into: Result, (inout Result, PKStrokePoint) -> ()) -> Result

返回使用给定的闭包组合序列元素的结果。

func reversed() -> ReversedCollection<PKStrokePath>

返回以相反顺序显示集合元素的视图。

func shuffled() -> [PKStrokePoint]

返回改组后的序列的元素。

func shuffled<T>(using: inout T) -> [PKStrokePoint]

返回序列的元素,使用给定的生成器作为随机源进行改组。

func sorted(by: (PKStrokePoint, PKStrokePoint) -> Bool) -> [PKStrokePoint]

返回序列中的元素,使用给定谓词作为元素之间的比较进行排序。

func split(maxSplits: Int, omittingEmptySubsequences: Bool, whereSeparator: (PKStrokePoint) -> Bool) -> [Slice<PKStrokePath>]

按顺序返回集合中最长的子序列,其中不包含满足给定谓词的元素。

func starts<PossiblePrefix>(with: PossiblePrefix, by: (PKStrokePoint, PossiblePrefix.Element) -> Bool) -> Bool

使用给定的谓词作为等效测试,返回一个布尔值,该值指示序列的初始元素是否等效于另一个序列中的元素。

func suffix(Int) -> Slice<PKStrokePath>

返回一个子序列,直到指定的最大长度,该子序列包含集合的最终元素。

func suffix(from: Int) -> Slice<PKStrokePath>

返回从指定位置到集合结尾的子序列。

func withContiguousStorageIfAvailable<R>((UnsafeBufferPointer<PKStrokePoint>) -> R) -> R?

Call body(p),其中p是指向集合的连续存储的指针。如果不存在此类存储,则会首先创建它。如果集合不支持连续存储形式的内部表示,body则不调用并nil返回它。

func parametricValue(CGFloat, offsetBy: PKStrokePath.InterpolatedSlice.Stride) -> CGFloat

关系
符合

RandomAccessCollection
原文地址:https://www.cnblogs.com/strengthen/p/14089366.html