Components
Boxes for checking and unchecking single values in forms.
Control for selecting an option inside a form.

Set adjustsFontForContentSizeCategory: true (the default) to enable Dynamic Type support for a Radio.
class Radio: Control, SimpleControlRepresents only the round button part of the control. Except for very custom UI shouldn’t see direct use.
Some of its basic control API is in common with LabeledRadio.
class LabeledRadio, Control, SimpleControlThe full radio control with a label. Can be customized with a more complex content view but needs to always have a label set as its main, which will reflect its disabled state etc.
Custom initializer, use when you need something more complex than a standard radio control with a simple label next to it.
Radio if needed, should be very rarely used.label must be a part of it.false if the UI where it will be displayed doesn’t support dynamic font sizes.public convenience init(text: String? = nil, adjustsFontForContentSizeCategory: Bool = true)Convenience initializer for the standard radio button theme. The label will be set to a simple Label with .text1 theme.
public var text: String?Convenience access to the label’s text
public var attributedText: NSAttributedString?Allows for setting formatted text of the labeled radio’s label. Keep in mind that Thumbprint theming will mostly be ignored if this is set.
public enum LabeledControl.ContentPlacement: CaseIterable { case leading case trailing }Available values for the contentPlacement property.
public var contentPlacementDetermines on which side of the labeled radio will the label and other content layout.


public var numberOfLines: IntConvenience access to the label’s property of the same name. For behavior, look the documentation for UILabel.numberOfLines
public var contentInsets: NSDirectionalEdgeInsetsAllows for larger margins around the labeled radio contents. The additional area will also register touches.
public let label: UILabelDirect read-only access to the labeled radio’s label. Usually it will be a Thumbprint.Label control but if initialized with custom content it may be a UILabel or a different subclass of it.
public func labelLayoutDidChange()If the labeled radio’s formatting is modified you should always call this method, it will ensure that the radio button is correctly aligned against it.
public var isSelected: BoolManages selected state

public var isEnabled: BoolManages enabled state

The Radio class manages only the graphical radio button itself. The full control with a label (or several) that should be generally used is LabeledRadio. The public API described above works for both classes other than contentPosition which is specific to LabeledControl.
Radio buttons should generally be used within a RadioGroup to control exclusive selection. Components such as RadioStack already set up the radio group for you and should be used wherever possible. To receive updates when the user selects a different radio button, subscribe to RadioGroup.selection.
import Combine/* ... */let titles = ["Apple", "Banana", "Orange"]let radioStack = RadioStack(titles: titles, adjustsFontForContentSizeCategory: adjustsFontForContentSizeCategory)radioStack.delegate = selfview.addSubview(radioStack)/* ... */radioStack.radioGroup.selection.receive(on: RunLoop.main).sink { [weak self] selection inself?.radioStackDidSelectRadioAt(index: selection)}.store(in: &subscriptions)