NSAttributedString ╰+攻爆jí腚メ 2022-03-22 10:55 155阅读 0赞 **概述** UIKit 在 NSAttributedString 中加入了新的方法,以支持格式化文本的绘制、计算文本在绘制前的大小及空间。这些方法不影响文本的内容,只影响绘制的过程。默认,文本绘制使用本地坐标,内容从某个点向右向下绘制。当你放置文本内容时,记住文本块的左上角就是绘制的起点。你可以在主线程之外使用这些方法,但是,如果是支持NSStringDrawingContext 的任何方法,则无法跨过线程 或 dispatch queue 共享 NSStringDrawiingContext。 **一、实例方法** **绘制文本** /** * @brief 当前图形上下文中的点,文本将从此开始绘制。该图形上下文的坐标系通常由当前正在绘制的视图定义。 * 该方法从某个点开始绘制整个文本。该方法根据 attributedstring 的属性来绘制行。 * 如果文本中出现换行符,将进行换行,后续的文本将被放到下一行的最初位置。 * */ - (void)drawAtPoint:(CGPoint)point NS_AVAILABLE(10_0, 6_0); /** * @brief 在当前图形上下文的指定矩形内绘制文本。 * 该方法在指定矩形内绘制尽可能多的文本内容,必要时会压缩字符。如果对于该矩形来说,文本内容太长, * 该方法绘制尽可能多的内容,剩余内容将被剪切。该方法用 attributed string 的属性来绘制行。 * 如果文本中出现换行符,将进行换行,后续的文本将被放到下一行的最初位置。 * */ - (void)drawInRect:(CGRect)rect NS_AVAILABLE(10_0, 6_0); /** * @brief 用提供的选项将文本绘制到指定的矩形分为内。 * 该方法在指定矩形内绘制尽可能多的文本内容,必要时会对字符进行压缩。 * 如果矩形内要绘制的文本内容太长,该方法将根据需要缩放字体,或者调整字符间距。该方法用 attributed string 的属性来绘制行。 * 如果文本中出现换行符,将进行换行,后续的文本将被放到下一行的最初位置。 * * @param rect 指定在某个矩形中绘制文本 * @param options 文本绘制选项 * @param context 上下文对象,用于包含信息:如何调整字间距以及缩放。最终,该对象包含的信息将用于文本绘制。该参数可为 nil。 */ - (void)drawWithRect:(CGRect)rect options:(NSStringDrawingOptions)options context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 6_0); **二、实例方法** /** * @brief 计算文本控件 * * @param size 宽高限制,用于计算文本绘制时占据的矩形块。 * @param options 文本绘制时的附加选项 * @param context context上下文。包括一些信息,例如如何调整字间距以及缩放。最终,该对象包含的信息将用于文本绘制。该参数可为 nil 。 * * @return 返回文本占据的Rect */ - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 6_0); /** * @brief 文本绘制所需 size,可以用该方法在绘制之前计算需要多大空间 * */ - (CGSize)size NS_AVAILABLE(10_0, 6_0); 枚举值NSStringDrawingOptions typedef NS_OPTIONS(NSInteger, NSStringDrawingOptions) { // 如果文本内容超出指定的矩形限制,换行之后继续累加文本高度 NSStringDrawingUsesLineFragmentOrigin = 1 << 0, // 计算行高时使用行间距。(字体大小+行间距=行高) NSStringDrawingUsesFontLeading = 1 << 1, // 计算布局时使用图元字形 NSStringDrawingUsesDeviceMetrics = 1 << 3, // 如果文本内容超出指定的矩形限制,文本将被截去并在最后一个字符后加上省略号。如果指定了 NSStringDrawingUsesLineFragmentOrigin选项,则该选项被忽略。 NSStringDrawingTruncatesLastVisibleLine NS_ENUM_AVAILABLE(10_5, 6_0) = 1 << 5, } NS_ENUM_AVAILABLE(10_0, 6_0); **常量:** UIKIT_EXTERN NSString * const NSFontAttributeName; UIKIT_EXTERN NSString * const NSParagraphStyleAttributeName; UIKIT_EXTERN NSString * const NSForegroundColorAttributeName; UIKIT_EXTERN NSString * const NSBackgroundColorAttributeName; UIKIT_EXTERN NSString * const NSLigatureAttributeName; UIKIT_EXTERN NSString * const NSKernAttributeName; UIKIT_EXTERN NSString * const NSStrikethroughStyleAttributeName; UIKIT_EXTERN NSString * const NSUnderlineStyleAttributeName; UIKIT_EXTERN NSString * const NSStrokeColorAttributeName; UIKIT_EXTERN NSString * const NSStrokeWidthAttributeName; UIKIT_EXTERN NSString * const NSShadowAttributeName; UIKIT_EXTERN NSString * const NSVerticalGlyphFormAttributeName; **常量解释:** // 该属性所对应的值是一个 UIFont 对象。该属性用于改变一段文本的字体。如果不指定该属性,则默认为12-point Helvetica(Neue)。 NSFontAttributeName // 该属性所对应的值是一个 NSParagraphStyle 对象。该属性在一段文本上应用多个属性。如果不指定该属性,则默认为 NSParagraphStyle 的defaultParagraphStyle 方法返回的默认段落属性。 NSParagraphStyleAttributeName // 该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的字体颜色。如果不指定该属性,则默认为黑色。 NSForegroundColorAttributeName // 该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的背景颜色。如果不指定该属性,则默认无背景色。 NSBackgroundColorAttributeName // 该属性所对应的值是一个 NSNumber 对象(整数)。连体字符是指某些连在一起的字符,它们采用单个的图元符号。0 表示没有连体字符。1 表示使用默认的连体字符。2表示使用所有连体符号。默认值为 1(注意,iOS 不支持值为 2)。 NSLigatureAttributeName // 该属性所对应的值是一个 NSNumber 对象(整数)。字母紧排指定了用于调整字距的像素点数。字母紧排的效果依赖于字体。值为 0 表示不使用字母紧排。默认值为0。 NSKernAttributeName // 该属性所对应的值是一个 NSNumber 对象(整数)。该值指定是否在文字上加上删除线,该值参考“Underline Style Attributes”。默认值是NSUnderlineStyleNone。 NSStrikethroughStyleAttributeName // 该属性所对应的值是一个 NSNumber 对象(整数)。该值指定是否在文字上加上下划线,该值参考“Underline Style Attributes”。默认值是NSUnderlineStyleNone。 NSUnderlineStyleAttributeName // 该属性所对应的值是一个 UIColor 对象。如果该属性不指定(默认),则等同于 NSForegroundColorAttributeName。否则,指定为删除线或下划线颜色。更多细节见“Drawing attributedstrings that are both filled and stroked”。 NSStrokeColorAttributeName // 该属性所对应的值是一个 NSNumber 对象(小数)。该值改变描边宽度(相对于字体size 的百分比)。默认为 0,即不改变。正数只改变描边宽度。负数同时改变文字的描边和填充宽度。例如,对于常见的空心字,这个值通常为3.0。 NSStrokeWidthAttributeName // 该属性所对应的值是一个 NSShadow 对象。默认为 nil NSShadowAttributeName // 该属性所对应的值是一个 NSNumber 对象(整数)。0 表示横排文本。1 表示竖排文本。在 iOS 中,总是使用横排文本,0 以外的值都未定义。 NSVerticalGlyphFormAttributeName
相关 最难修改的Bug之NSAttributedString:代码是网上找的,之前一直用也没问题,但是突然有一天这里挂了 NSAttributedString *attributeString=[[NSAttributedString alloc] initWithData:[str dat... 港控/mmm°/ 2024年05月03日 14:41/ 0 赞/ 50 阅读
相关 富文本常用封装(NSAttributedString浅析) > 作者:王隆帅 > > 原文链接:http://www.jianshu.com/p/960e25d72750 最近经常遇到关于富文本的一些需求,特此封装了几个最常用的AP Dear 丶/ 2023年10月17日 08:04/ 0 赞/ 6 阅读
相关 iOS 字符属性NSAttributedString描述 字符属性 字符属性可以应用于 attributed string 的文本中。 NSString \const NSFontAttributeName;(字体 谁借莪1个温暖的怀抱¢/ 2022年08月21日 00:07/ 0 赞/ 283 阅读
相关 【iOS开发】NSAttributedString和NSMutableAttributedString 属性文本简介 一个NSAttributedString对象管理字符串和属性相关的设置(例如,字体、字距)适用于单个字符或字符串中的字符的范围。 字符及其属性的关联被称为属性 亦凉/ 2022年08月19日 12:29/ 0 赞/ 466 阅读
相关 NSAttributedString文本属性设置的使用 使用NSAttributedString可以进行个性化的文本属性显示设置。 NSAttributedString在使用时,共有多个属性可以行设置使用。 // 设置字 快来打我*/ 2022年06月13日 11:52/ 0 赞/ 304 阅读
相关 NSAttributedString 概述 UIKit 在 NSAttributedString 中加入了新的方法,以支持格式化文本的绘制、计算文本在绘制前的大小及空间。这些方法不影响文本的内容,只影响绘制的过 ╰+攻爆jí腚メ/ 2022年03月22日 10:55/ 0 赞/ 156 阅读
还没有评论,来说两句吧...