Additional drawing options to apply to the string during rendering. A context object with information about how to adjust the font tracking and scaling information. On return, the specified object contains information about the actual values used to render the string. This parameter may be nil. A rectangle whose size component indicates the width and height required to draw the entire contents of the string. You can use this method to compute the space required to draw the string.
The constraints you specify in the size parameter are a guide for the renderer for how to size the string. However, the actual bounding rectangle returned by this method can be larger than the constraints if additional space is needed to render the entire string. Typically, the renderer preserves the width constraint and adjusts the height constraint as needed.
In iOS 7 and later, this method returns fractional sizes in the size component of the returned rectangle ; to use a returned size to size views, you must use raise its value to the nearest higher integer using the ceil function. To calculate the bounding rectangle, this method uses the baseline origin by default, so it behaves as a single line. To render the string in multiple lines, specify uses Line Fragment Origin in options. Returns a Boolean value that indicates if the attributed string contains a property configured in the specified range.
Language: Swift Objective-C. Instance Method bounding Rect with: options: context:. Returns the bounding rectangle required to draw the string. SDKs iOS 6. See Also Getting Metrics for the String.Draws the receiver with the specified options, within the given rectangle in the current graphics context.
The string drawing options.
NSAttributedString text always sticks to bottom with big lineHeight
The rect argument's origin field specifies the rendering origin. The point is interpreted as the baseline origin by default. The size field specifies the text container size. The width part of the size field specifies the maximum line fragment width if larger than 0. The height defines the maximum size that can be occupied with text if larger than 0. Returns a URL, either from a link attribute or from text at the given location that appears to be a URL string, for use in automatic link detection.
Calculates and returns bounding rectangle for the receiver drawn using the options specified, within the given rectangle in the current graphics context. Language: Swift Objective-C. Instance Method draw with: options:. SDK macOS Framework App Kit. The rectangle specifies the rendering origin in the current graphics context. You should only invoke this method when there is a current graphics context.
See Also Deprecated Methods. Initializes a new attributed string object from the data at the given URL.This talk was delivered live in September at try! Swift NYC. The video was recorded, produced, and transcribed by Realm, and is published here with the permission of the conference organizers. The handling of rich text is most definitely not easy.
We have to consider a lot of things like fonts, characters, glyphs, emojis, images, ligatures, etc. In this try! You can see on slide 3, has this ever happened to you?
In this talk, I will show you how to render the text in the correct position. TextKit was introduced back in iOS 7. It is a modern text-ware rendering engine. TextKit is not a framework in the traditional sense. On slide 12, we have two different UILabels. They have the same text, but the fonts are different. Each font has the same size, but the results are quite different. Where do these differences come from? Fonts contain data representing the metrics used for displaying them. On slide 15 we have an example for different font metrics.
The baseline is a hypothetical line upon which characters rest. The definition of the baseline differs, depending on the language.
Though at this time, it is described in the Roman text because TextKit is based on it.
The ascent is the distance from the top of the glyphs to the baselines, and descent is from the baselines to the bottom. The leading is the required vertical distance from the bottom of the descender to the top of the next line in the marginal settings. Can we know the size to be drawn without using a spreadsheet? On slide 20, we have the Label and the boundingRect for the same text with different fonts, and their bounding sizes match exactly.
Because your Text Attribute has margins by default. We have a textContainerInset and a lineFragmentPadding. In fact, the San Francisco font — it is a new font from iOS 9 — has zero leading. Same for the other fonts, all have only very small values.Attributed String Programming Guide describes the attributed string objects, instantiated from the NSAttributedString class or the CFAttributedString Core Foundation opaque type, which manage sets of text attributes, such as font and kerning, that are associated with character strings or individual characters.
Creating Attributed Strings in Cocoa describes how to create attributed strings with data that you provide. Accessing Attributes describes how to access text attributes. Changing an Attributed String describes how to change characters and attributes in an attributed string. Drawing Attributed Strings describes how to draw an attributed string in a view.
Word and Line Calculations in Attributed Strings describes how to work with attributed strings in editors. Standard Attributes describes global NSString constants containing the attribute names.
Documentation Archive Developer Search. See Also For more information, refer to the following documents: String Programming Guide describes the string objects that hold the Unicode character information in attributed strings. Sending feedback….
Please try submitting your feedback later. Thank you for providing feedback! Your input helps improve our developer documentation.
How helpful is this document?
How can we improve this document? Fix typos or links Fix incorrect information Add or update code samples Add or update illustrations Add information aboutA string that has associated attributes such as visual style, hyperlinks, or accessibility data for portions of its text. An NSAttributed String object manages character strings and associated sets of attributes for example, font and kerning that apply to individual characters or ranges of characters in the string.
An association of characters and their attributes is called an attributed string. An attributed string identifies attributes by name, using an NSDictionary object to store a value under the given name. If you are using attributed strings with the Core Text framework, you can also use the attribute keys defined by that framework.
In iOS 6 and later you can use attributed strings to display formatted text in text views, text fields, and some other controls. Both AppKit and UIKit also define extensions to the basic attributed string interface that allows you to draw their contents in the current graphic context.
The default font for NSAttributed String objects is Helvetica point, which may differ from the default system font for the platform.
iOS - Change Line Height of UITextView
Thus, you might want to create new strings with non-default attributes suitable for your application. The comparison includes both a character-by-character string equality check and an equality check of all attributes.
Such a comparison is not likely to yield a match if the string has many attributes, such as attachments, lists, and tables, for example. See Toll-Free Bridging for more information.
Returns an NSAttributed String object initialized with the characters of a given string and no attribute information. Returns an NSAttributed String object initialized with a given string and attributes.
Returns an NSAttributed String object initialized with the characters and attributes of another given attributed string. Initializes and returns a new attributed string object from the data contained in the given data object. Initializes and returns a new attributed string object from HTML contained in the given data object. Initializes a new attributed string object by decoding the stream of RTF commands and data contained in the given data object.
Initializes a new attributed string object by decoding the stream of RTFD commands and data contained in the given data object. Initializes a new attributed string object from the specified file wrapper containing an RTFD document.
The character contents of the receiver as an NSString object. Returns the attributes for the character at a given index, and by reference the range over which the attributes apply. Returns the value for an attribute with a given name of the character at a given index, and by reference the range over which the attribute applies.
Returns the value for the attribute with a given name of the character at a given index, and by reference the range over which the attribute applies. Returns a Boolean value that indicates whether the receiver is equal to another given attributed string. Returns an NSAttributed String object consisting of the characters and attributes within a given range in the receiver.
Executes the specified closure for each range of a particular attribute in the attributed string. Returns the range of characters that form a word or other linguistic unit surrounding the given index, taking language characteristics into account. Returns the index of the closest character before the given index, and within the given range, that can be placed on a new line by hyphenating.
boundingRectWithSize for NSAttributedString returning wrong size
Returns an data object that contains a text stream corresponding to the characters and attributes within the given range.
Returns an NSFile Wrapper object that contains a text stream corresponding to the characters and attributes within the given range. Returns a data object that contains a Microsoft Word—format stream corresponding to the characters and attributes within the specified range.The message of TestFlight's new version available notification e-mail seems to contain the strange characters. Can you post a hex dump of a small Data value that reproduces this problem?
Note The easiest way to get a hex dump of a Data value is via this code:. With reference to your second post, I took the code from there and put it in a small test project Xcode 9. I ran it and set a breakpoint on line When I stopped in the debugging I use the console to print raw :. Thinking that DevForums might have munged your string I took your hex dump, used Hex Fiend to create a test. Finally, I took test. No hits. I recommend that you take some time to create a small focused test project that definitely illustrates the problem.
Upload the project to a file sharing site, then post that URL along with specific instructions on how you ran it and the problem you saw. Specifically, if I set a breakpoint on line of ViewController. I can see this junk using po if I render it to UTF-8 bytes:. Consider this code snippet:. On the other hand, getting rid of these characters is easy once you know what they are.
A context object with information about how to adjust the font tracking and scaling information.Letter Space And Line Height In HTML Element Using css
On return, the specified object contains information about the actual values used to render the string. This parameter may be nil. If uses Line Fragment Origin is specified in optionsit wraps the string text as needed to make it fit.
If the string is too big to fit completely inside the rectangle, the method scales the font or adjusts the letter spacing to make the string fit within the given bounds. If uses Line Fragment Origin is not specified in optionsthe origin of the rectangle is the baseline of the only line. The text will be displayed above the rectangle and not inside of it. The rest of the text will be on the top edge of the rectangle. This method draws the line using the attributes specified in the attributed string itself.
If newline characters are present in the string, those characters are honored and cause subsequent text to be placed on the next line underneath the starting point. This method uses the baseline origin by default, so it renders the string as a single line.
To render the string in multiple lines, specify uses Line Fragment Origin in options. Draws the attributed string inside the specified bounding rectangle in the current graphics context. Language: Swift Objective-C. Instance Method draw with: options: context:. Draws the attributed string in the specified bounding rectangle using the provided options. SDKs iOS 6. There must be either an active graphics context when you call this method. See Also Drawing the String.