TMBarLayout

@MainActor
open class TMBarLayout : TMBarViewFocusProvider, TMTransitionStyleable

TMBarLayout dictates the way that BarButtons are displayed within a bar, handling layout and population.

Attention: You should not directly use BarLayout, but instead inherit from it or use an available subclass such as TMHorizontalBarLayout.

  • How to display the contents of the layout.

    • .intrinsic: The layout and contents will be intrinsically sized, taking up as much space as required.
    • .fit: The layout and it’s contents will be restricted to fitting within the bounds of the bar.
    Declaration

    Swift

    public enum ContentMode
  • How to align the layout in the parent.

    • .leading: The layout will be aligned from the leading edge of the parent.
    • .center: The layout will be aligned from the center of the parent.
    • .centerDistributed: The layout will be aligned so that its entire contents is centered in the parent if possible.
    • .trailing: The layout will be aligned from the trailing edge of the parent.
    Declaration

    Swift

    public enum Alignment
  • Container view which contains actual contents

    Declaration

    Swift

    @MainActor
    public let view: UIView
  • The content mode in which to display the content in the layout.

    Options:

    • .intrinsic: The layout and contents will be intrinsically sized, taking up as much space as required.
    • .fit: The layout and it’s contents will be restricted to fitting within the bounds of the bar.

    By default this is set to .intrinsic

    Declaration

    Swift

    @MainActor
    public var contentMode: ContentMode { get set }
  • Inset to apply to the outside of the layout.

    Declaration

    Swift

    @MainActor
    open var contentInset: UIEdgeInsets { get set }
  • Transition style for updating layout parameters, such as scroll offset.

    Declaration

    Swift

    @MainActor
    public var transitionStyle: TMTransitionStyle { get set }
  • How to align the layout in the bar.

    Options:

    • .leading: The layout will be aligned from the leading edge of the parent.
    • .center: The layout will be aligned from the center of the parent.
    • .trailing: The layout will be aligned from the trailing edge of the parent.
    Declaration

    Swift

    @MainActor
    public var alignment: Alignment { get set }
  • Layout the BarLayout.

    Declaration

    Swift

    @MainActor
    open func layout(in view: UIView)
    Parameters
    view

    The view to use as the root of the layout.

  • Insert new bar buttons into the layout from a specified index.

    Declaration

    Swift

    @MainActor
    open func insert(buttons: [TMBarButton], at index: Int)
    Parameters
    buttons

    The buttons to insert.

    index

    The index to start inserting the buttons at.

  • Remove existing bar buttons from the layout.

    Declaration

    Swift

    @MainActor
    open func remove(buttons: [TMBarButton])
    Parameters
    buttons

    The buttons to remove.

  • Calculate the focusRect for the current position and capacity.

    This rect defines the area of the layout that should currently be highlighted for the selected bar button.

    Declaration

    Swift

    @MainActor
    open func focusArea(for position: CGFloat, capacity: Int) -> CGRect
    Parameters
    position

    Current position to display.

    capacity

    Capacity of the bar (items).

    Return Value

    Calculated focus rect.

  • Inform that the layout requires a reload of its contents.

    Note

    This will only be applied if the layout has previously had content provided.
    Declaration

    Swift

    @MainActor
    open func setNeedsReload()
  • Layout that won’t display any visible bar buttons.

    The indicator will be visible and equally distributed in the layout width.

    Declaration

    Swift

    @MainActor
    public final class None : TMBarLayout