CTLine

typedef const struct CF_BRIDGED_TYPE(id) __CTLine * CTLineRef;

typedef CF_OPTIONS(CFOptionFlags, CTLineBoundsOptions) {
    kCTLineBoundsExcludeTypographicLeading  = 1 << 0,
    kCTLineBoundsExcludeTypographicShifts   = 1 << 1,
    kCTLineBoundsUseHangingPunctuation      = 1 << 2,
    kCTLineBoundsUseGlyphPathBounds         = 1 << 3,
    kCTLineBoundsUseOpticalBounds           = 1 << 4,
    kCTLineBoundsIncludeLanguageExtents CT_ENUM_AVAILABLE(10_11, 8_0) = 1 << 5,
};

typedef CF_ENUM(uint32_t, CTLineTruncationType) {
    kCTLineTruncationStart  = 0,
    kCTLineTruncationEnd    = 1,
    kCTLineTruncationMiddle = 2
};

CFTypeID CTLineGetTypeID( void ) CT_AVAILABLE(10_5, 3_2);

CTLineRef CTLineCreateWithAttributedString(
    CFAttributedStringRef attrString ) CT_AVAILABLE(10_5, 3_2);

CTLineRef __nullable CTLineCreateTruncatedLine(
    CTLineRef line,
    double width,
    CTLineTruncationType truncationType,
    CTLineRef __nullable truncationToken ) CT_AVAILABLE(10_5, 3_2);

CTLineRef __nullable CTLineCreateJustifiedLine(
    CTLineRef line,
    CGFloat justificationFactor,
    double justificationWidth ) CT_AVAILABLE(10_5, 3_2);

CFIndex CTLineGetGlyphCount(
    CTLineRef line ) CT_AVAILABLE(10_5, 3_2);

CFArrayRef CTLineGetGlyphRuns(
    CTLineRef line ) CT_AVAILABLE(10_5, 3_2);

CFRange CTLineGetStringRange(
    CTLineRef line ) CT_AVAILABLE(10_5, 3_2);

double CTLineGetPenOffsetForFlush(
    CTLineRef line,
    CGFloat flushFactor,
    double flushWidth ) CT_AVAILABLE(10_5, 3_2);

void CTLineDraw(
    CTLineRef line,
    CGContextRef context ) CT_AVAILABLE(10_5, 3_2);

double CTLineGetTypographicBounds(
    CTLineRef line,
    CGFloat * __nullable ascent,
    CGFloat * __nullable descent,
    CGFloat * __nullable leading ) CT_AVAILABLE(10_5, 3_2);

CGRect CTLineGetBoundsWithOptions(
    CTLineRef line,
    CTLineBoundsOptions options ) CT_AVAILABLE(10_8, 6_0);

double CTLineGetTrailingWhitespaceWidth(
    CTLineRef line ) CT_AVAILABLE(10_5, 3_2);

CGRect CTLineGetImageBounds(
    CTLineRef line,
    CGContextRef __nullable context ) CT_AVAILABLE(10_5, 3_2);

CFIndex CTLineGetStringIndexForPosition(
    CTLineRef line,
    CGPoint position ) CT_AVAILABLE(10_5, 3_2);

CGFloat CTLineGetOffsetForStringIndex(
    CTLineRef line,
    CFIndex charIndex,
    CGFloat * __nullable secondaryOffset ) CT_AVAILABLE(10_5, 3_2);

void CTLineEnumerateCaretOffsets(
    CTLineRef line,
    void (^block)(double offset, CFIndex charIndex, bool leadingEdge, bool* stop) ) CT_AVAILABLE(10_11, 9_0);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 希望你能明白,比起那个火急火燎地拉着你去宾馆的人,那些默默站在你身后为考虑一切的人更值得你去爱! 2017年8月2...
    冬白love阅读 462评论 8 9
  • 如何建立高质量的交流呢?关键一点是交流的时候要更私人,最好没有打扰的,更好是一对一的交流。 和菜头在《知人之明》中...
    学习富本阅读 587评论 1 2
  • 外围线outline--css 1.表单获取焦点事件onfocus; 例:input.onfocus=functi...
    他在发呆阅读 711评论 0 0