NSAttributedString UIKit Additions 參考

來源:互聯網
上載者:User

原文:http://developer.apple.com/library/ios/#documentation/uikit/reference/NSAttributedString_UIKit_Additions/RevisionHistory.html

概述

UIKit  在 NSAttributedString 中加入了新的方法,以支援格式化文本的繪製、計算文本在繪製前的大小及空間。這些方法不影響文本的內容,隻影響繪製的過程。

預設,文本繪製使用本地座標,內容從某個點向右向下繪製。當你放置常值內容時,記住文字區塊的左上方就是繪製的起點。

你可以在主線程之外使用這些方法,但是,如果是支援NSStringDrawingContext 的任何方法,則無法跨過線程或 dispatch queue 共用 NSStringDrawiingContext。

執行個體方法

繪製文本

  • – drawAtPoint:
  • – drawInRect:
  • – drawWithRect:options:context:

計算文本的空間

  • – size
  • – boundingRectWithSize:options:context:

執行個體方法

boundingRectWithSize:options:context:

 返迴文本繪製所佔據的矩形空間。

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context

參數

size

寬高限制,用於計算文本繪製時佔據的矩形塊。

Thewidth and height constraints to apply when computing the string’s boundingrectangle.

options

文本繪製時的附加選項。可能取值請參考“NSStringDrawingOptions”。

context

context上下文。包括一些資訊,例如如何調整字間距以及縮放。最終,該對象包含的資訊將用於文本繪製。該參數可為 nil 。

傳回值

一個矩形,大小等於文本繪製完將佔據的寬和高。

討論

可以使用該方法計算文本繪製所需的空間。size 參數是一個constraint ,用於在繪製文本時作為參考。但是,如果繪製完整個文本需要更大的空間,則返回的矩形大小可能比 size 更大。一般,繪製時會採用constraint 提供的寬度,但高度則會根據需要而定。

特殊情況

為了計算文字區塊的大小,該方法採用預設基準。

如果 NSStringDrawingUsesLineFragmentOrigin未指定,矩形的高度將被忽略,同時使用單線繪製。(由於一個 bug,在 iOS6 中,寬度會被忽略)

相容性

  • iOS 6.0 以後支援。

聲明於

NSStringDrawing.h

drawAtPoint:

從指定點(當前圖形上下文)開始繪製文本。

- (void)drawAtPoint:(CGPoint)point

參數

point

當前圖形上下文中的點,文本將從此開始繪製。該圖形內容相關的座標系通常由當前正在繪製的視圖定義。

討論

該方法從某個點開始繪製整個文本。該方法根據 attributedstring 的屬性來繪製行。如果文本中出現分行符號,將進行換行,後續的文本將被放到下一行的最初位置。

相容性

  • iOS 6.0 以後支援.

聲明於

NSStringDrawing.h

drawInRect:

在當前圖形內容相關的指定矩形內繪製文本。

- (void)drawInRect:(CGRect)rect

參數

rect

指定繪製文本的矩形範圍。

討論

該方法在指定矩形內繪製儘可能多的常值內容,必要時會壓縮字元。如果對於該矩形來說,常值內容太長,該方法繪製儘可能多的內容,剩餘內容將被剪下。該方法用 attributed string 的屬性來繪製行。如果文本中出現分行符號,將進行換行,後續的文本將被放到下一行的最初位置。

 相容性

  • Available in iOS 6.0 and later.

Declared In

NSStringDrawing.h

drawWithRect:options:context:

用提供的選項將文本繪製到指定的矩形分為內。

- (void)drawWithRect:(CGRect)rect options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context

參數

rect

指定在某個矩形中繪製文本。

options

文本繪製選項。可能取值請參考“NSStringDrawingOptions”。

context

內容物件,用於包含資訊:如何調整字間距以及縮放。最終,該對象包含的資訊將用於文本繪製。該參數可為 nil。

討論

該方法在指定矩形內繪製儘可能多的常值內容,必要時會對字元進行壓縮。如果矩形內要繪製的常值內容太長,該方法將根據需要縮放字型,或者調整字元間距。

該方法用 attributed string 的屬性來繪製行。如果文本中出現分行符號,將進行換行,後續的文本將被放到下一行的最初位置。

特殊情況

該方法採用預設基準。

如果NSStringDrawingUsesLineFragmentOrigin 未指定,矩形的高度將被忽略,同時使用單線繪製。(由於一個 bug,在 iOS6 中,寬度會被忽略)

相容性

  • iOS 6.0 以後支援.

聲明於

NSStringDrawing.h

size

返迴文本繪製所需 size。

Returns the sizerequired to draw the string.

- (CGSize)size

傳回值

繪製完整文本所需的最小 size。

討論

可以用該方法在繪製之前計算需要多大空間。

相容性

  • iOS 6.0 以後支援.

聲明於

NSStringDrawing.h

常量

NSStringDrawingOptions

文本繪製選項。

enum {

   NSStringDrawingTruncatesLastVisibleLine= 1 << 5,

   NSStringDrawingUsesLineFragmentOrigin= 1 << 0,

   NSStringDrawingUsesFontLeading= 1 << 1,

   NSStringDrawingUsesDeviceMetrics= 1 << 3,

};

typedef NSInteger NSStringDrawingOptions;

常量

NSStringDrawingTruncatesLastVisibleLine

如果常值內容超出指定的矩形限制,文本將被截去並在最後一個字元後加上省略符號。如果指定了NSStringDrawingUsesLineFragmentOrigin選項,則該選項被忽略。

NSStringDrawingUsesLineFragmentOrigin

繪製文本時使用 line fragement origin 而不是 baseline origin。

Theorigin specified when drawing the string is the line fragment origin and notthe baseline origin.

NSStringDrawingUsesFontLeading

計算行高時使用行間距。(譯者註:字型大小+行間距=行高)

NSStringDrawingUsesDeviceMetrics

計算布局時使用圖元字形(而不是印刷字型)。

Usethe image glyph bounds (instead of the typographic bounds) when computinglayout.

劃線樣式屬性

指定底線或刪除線樣式。

enum {

   NSUnderlineStyleNone = 0x00,

    NSUnderlineStyleSingle= 0x01,

};

常量

NSUnderlineStyleNone

不劃線。

NSUnderlineStyleSingle

單線

討論

可以在屬性字串的 NSUnderlineStyleAttributeName和NSStrikethroughStyleAttributeName屬性上使用這些常量。

字元屬性

字元屬性可以應用於 attributed string 的文本中。

 

NSString *const NSFontAttributeName;

NSString *const NSParagraphStyleAttributeName;

NSString *const NSForegroundColorAttributeName;

NSString *const NSBackgroundColorAttributeName;

NSString *const NSLigatureAttributeName;

NSString *const NSKernAttributeName;

NSString *const NSStrikethroughStyleAttributeName;

NSString *const NSUnderlineStyleAttributeName;

NSString *const NSStrokeColorAttributeName;

NSString *const NSStrokeWidthAttributeName;

NSString *const NSShadowAttributeName;

NSString *const NSVerticalGlyphFormAttributeName;

常量

NSFontAttributeName

該屬性所對應的值是一個 UIFont 對象。該屬性用於改變一段文本的字型。如果不指定該屬性,則預設為12-point Helvetica(Neue)。

NSParagraphStyleAttributeName

該屬性所對應的值是一個 NSParagraphStyle 對象。該屬性在一段文本上應用多個屬性。如果不指定該屬性,則預設為 NSParagraphStyle 的defaultParagraphStyle 方法返回的預設段落屬性。

NSForegroundColorAttributeName

該屬性所對應的值是一個 UIColor 對象。該屬性用於指定一段文本的字型顏色。如果不指定該屬性,則預設為黑色。

NSBackgroundColorAttributeName

該屬性所對應的值是一個 UIColor 對象。該屬性用於指定一段文本的背景顏色。如果不指定該屬性,則預設無背景色。

NSLigatureAttributeName

該屬性所對應的值是一個 NSNumber 對象(整數)。連體字元是指某些連在一起的字元,它們採用單個的圖元符號。0 表示沒有連體字元。1 表示使用預設的連體字元。2表示使用所有連體符號。預設值為 1(注意,iOS 不支援值為 2)。

NSKernAttributeName

該屬性所對應的值是一個 NSNumber 對象(整數)。字母緊排指定了用於調整字距的像素點數。字母緊排的效果依賴於字型。值為 0 表示不使用字母緊排。預設值為0。

NSStrikethroughStyleAttributeName

該屬性所對應的值是一個 NSNumber 對象(整數)。該值指定是否在文字上加上刪除線,該值參考“Underline Style Attributes”。預設值是NSUnderlineStyleNone。

NSUnderlineStyleAttributeName

該屬性所對應的值是一個 NSNumber 對象(整數)。該值指定是否在文字上加上底線,該值參考“Underline Style Attributes”。預設值是NSUnderlineStyleNone。

NSStrokeColorAttributeName

該屬性所對應的值是一個 UIColor 對象。如果該屬性不指定(預設),則等同於 NSForegroundColorAttributeName。否則,指定為刪除線或底線顏色。更多細節見“Drawing attributedstrings that are both filled and stroked”。

NSStrokeWidthAttributeName

該屬性所對應的值是一個 NSNumber 對象(小數)。該值改變描邊寬度(相對於字型size 的百分比)。預設為 0,即不改變。正數只改變描邊寬度。負數同時改變文字的描邊和填充寬度。例如,對於常見的空心字,這個值通常為3.0。

NSShadowAttributeName

該屬性所對應的值是一個 NSShadow 對象。預設為 nil。

NSVerticalGlyphFormAttributeName

該屬性所對應的值是一個 NSNumber 對象(整數)。0 表示橫排文本。1 表示豎排文本。在 iOS 中,總是使用橫排文本,0 以外的值都未定義。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.