Skip to content

krzyzanowskim/STTextKitPlus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Collection of useful TextKit 2 helpers.

Collection of TextKit 2 helpers used to build STTextView.

Usage

NSRange Additions

NSRange.notFound
NSRange.isEmpty
NSRange.nsValue

NSRange(_ textRange: NSTextRange, in textContentManager: NSTextContentManager)
NSRange(_ textLocation: NSTextLocation, in textContentManager: NSTextContentManager)

NSTextRange Additions

NSTextRange(_ nsRange: NSRange, in textContentManager: NSTextContentManager)

func length(in textContentManager: NSTextContentManager) -> Int
func clamped(to textRange: NSTextRange) -> NSTextRange?

NSTextContentManager Additions

func location(at offset: Int) -> NSTextLocation?
func location(line lineIdx: Int, character characterIdx: Int? = 0) -> NSTextLocation?

func position(_ location: NSTextLocation) -> (row: Int, column: Int)?

func attributedString(in range: NSTextRange?) -> NSAttributedString?

NSTextLayoutManager Additions

func textLineFragment(at location: NSTextLocation) -> NSTextLineFragment?
func textLineFragment(at point: CGPoint) -> NSTextLineFragment?

func extraLineTextLayoutFragment() -> NSTextLayoutFragment?
func extraLineTextLineFragment() -> NSTextLineFragment?

func location(interactingAt point: CGPoint, inContainerAt containerLocation: NSTextLocation) -> NSTextLocation?

func textSegmentFrame(at location: NSTextLocation, type: NSTextLayoutManager.SegmentType, options: SegmentOptions = [.upstreamAffinity]) -> CGRect?
func textSegmentFrame(in textRange: NSTextRange, type: NSTextLayoutManager.SegmentType, options: SegmentOptions = [.upstreamAffinity, .rangeNotRequired]) -> CGRect?

func typographicBounds(in textRange: NSTextRange) -> CGRect?

func enumerateTextLayoutFragments(in range: NSTextRange, options: NSTextLayoutFragment.EnumerationOptions = [], using block: (NSTextLayoutFragment) -> Bool) -> NSTextLocation?

var insertionPointLocations: [NSTextLocation]
var insertionPointSelections: [NSTextSelection]

NSTextLayoutFragment Additions

var isExtraLineFragment: Bool

func textLineFragment(at location: NSTextLocation, in textContentManager: NSTextContentManager? = nil) -> NSTextLineFragment?
func textLineFragment(at location: CGPoint, in textContentManager: NSTextContentManager? = nil) -> NSTextLineFragment?

NSTextLineFragment Additions

textRange(in textLayoutFragment: NSTextLayoutFragment) -> NSTextRange?

var isExtraLineFragment: Bool

NSTextLocation Addition

static func == (lhs: Self, rhs: Self) -> Bool
static func != (lhs: Self, rhs: Self) -> Bool
static func < (lhs: Self, rhs: Self) -> Bool
static func <= (lhs: Self, rhs: Self) -> Bool
static func > (lhs: Self, rhs: Self) -> Bool
static func >= (lhs: Self, rhs: Self) -> Bool
static func ~= (lhs: Self, rhs: Self) -> Bool

Contributing and Collaboration

I'd love to hear from you! Get in touch via an issue or pull request.