iOS Developer Library

Developer

UIKit Framework Reference NSLayoutManagerDelegate Protocol Reference for iOS

Options
Deployment Target:

On This Page
Language:

NSLayoutManagerDelegate

The NSLayoutManagerDelegate protocol defines the optional methods implemented by delegates of NSLayoutManager objects.

Inheritance


Not Applicable

Import Statement


import UIKit @import UIKit;

Availability


Available in iOS 7.0 and later.
  • Informs the delegate that the given layout manager has finished laying out text in the given text container.

    Declaration

    Swift

    optional func layoutManager(_ layoutManager: NSLayoutManager, didCompleteLayoutForTextContainer textContainer: NSTextContainer?, atEnd layoutFinishedFlag: Bool)

    Objective-C

    - (void)layoutManager:(NSLayoutManager *)layoutManager didCompleteLayoutForTextContainer:(NSTextContainer *)textContainer atEnd:(BOOL)layoutFinishedFlag

    Parameters

    layoutManager

    The layout manager doing the layout.

    textContainer

    The text container in which layout is complete. If nil, if there aren’t enough containers to hold all the text; the delegate can use this information as a cue to add another text container.

    layoutFinishedFlag

    If YEStrue, layoutManager is finished laying out its text—this also means that textContainer is the final text container used by the layout manager. Delegates can use this information to show an indicator or background or to enable or disable a button that forces immediate layout of text.

    Discussion

    This message is sent whenever a text container has been filled. This method can be useful for paginating.

    Import Statement

    import UIKit

    Availability

    Available in iOS 7.0 and later.

  • Sent right before the layout manager invalidates layout due to the text container changing geometry.

    Declaration

    Swift

    optional func layoutManager(_ layoutManager: NSLayoutManager, textContainer textContainer: NSTextContainer, didChangeGeometryFromSize oldSize: CGSize)

    Objective-C

    - (void)layoutManager:(NSLayoutManager *)layoutManager textContainer:(NSTextContainer *)textContainer didChangeGeometryFromSize:(CGSize)oldSize

    Parameters

    layoutManager

    The layout manager invalidating layout.

    textContainer

    The text container that changed geometry.

    oldSize

    The size of the text container before it changed geometry.

    Discussion

    The delegate can react to the geometry change and perform adjustments such as recreate an exclusion path.

    Import Statement

    import UIKit

    Availability

    Available in iOS 7.0 and later.

  • Enables customizing the initial glyph generation process.

    Declaration

    Swift

    optional func layoutManager(_ layoutManager: NSLayoutManager, shouldGenerateGlyphs glyphs: UnsafePointer<CGGlyph>, properties props: UnsafePointer<NSGlyphProperty>, characterIndexes charIndexes: UnsafePointer<Int>, font aFont: UIFont!, forGlyphRange glyphRange: NSRange) -> Int

    Objective-C

    - (NSUInteger)layoutManager:(NSLayoutManager *)layoutManager shouldGenerateGlyphs:(const CGGlyph *)glyphs properties:(const NSGlyphProperty *)props characterIndexes:(const NSUInteger *)charIndexes font:(UIFont *)aFont forGlyphRange:(NSRange)glyphRange

    Parameters

    layoutManager

    The layout manager doing the layout.

    glyphs

    A pointer to the layout manager's glyph cache.

    props

    A pointer to a buffer containing glyph properties for the glyphs in the cache.

    charIndexes

    A pointer to the starting index for the characters in the text storage for which glyphs are generated.

    aFont

    A font to override the font attributes in the text storage for the specified character range.

    glyphRange

    The range of glyphs in the glyph cache to set.

    Return Value

    The actual glyph range stored in this method. By returning 0, it can indicate for the layout manager to do the default processing.

    Discussion

    This message is sent whenever the layout manager is about to store the initial glyph information via setGlyphs:properties:characterIndexes:font:forGlyphRange:. To customize the initial glyph generation process, this method can invoke setGlyphs:properties:characterIndexes:font:forGlyphRange: with modified glyph information.

    Import Statement

    import UIKit

    Availability

    Available in iOS 7.0 and later.

  • Returns the control character action for the control character at the given character index.

    Declaration

    Swift

    optional func layoutManager(_ layoutManager: NSLayoutManager, shouldUseAction action: NSControlCharacterAction, forControlCharacterAtIndex charIndex: Int) -> NSControlCharacterAction

    Objective-C

    - (NSControlCharacterAction)layoutManager:(NSLayoutManager *)layoutManager shouldUseAction:(NSControlCharacterAction)action forControlCharacterAtIndex:(NSUInteger)charIndex

    Parameters

    layoutManager

    The layout manager doing the layout.

    action

    The proposed control character action for the character at the given index. Possible values are enumerated by NSControlCharacterAction.

    charIndex

    The index of the control character for which the action is proposed.

    Return Value

    The control character action for the control character at the given index.

    Import Statement

    import UIKit

    Availability

    Available in iOS 7.0 and later.

  • Informs the delegate that the given layout manager has invalidated layout information (not glyph information).

    Declaration

    Swift

    optional func layoutManagerDidInvalidateLayout(_ sender: NSLayoutManager)

    Objective-C

    - (void)layoutManagerDidInvalidateLayout:(NSLayoutManager *)sender

    Parameters

    sender

    The layout manager that invalidated layout.

    Discussion

    This message is sent only when layout was complete and then became invalidated for some reason. Delegates can use this information to show an indicator of background layout or to enable a button that forces immediate layout of text.

    Import Statement

    import UIKit

    Availability

    Available in iOS 7.0 and later.