Вам необходимо отредактировать источник для класса DLRadioButton
.
Вот пример быстрого изменения.
Примечание: это изменение будет работать только для положения левой иконки с многострочными метками кнопок. Положение правой кнопки по-прежнему будет работать с однострочными кнопками.
В DLRadioButton.m
в источнике библиотеки добавьте этот метод:
- (CGSize)intrinsicContentSize {
[self.titleLabel sizeToFit];
CGSize sz = self.titleLabel.bounds.size;
sz.height += self.titleEdgeInsets.top + self.titleEdgeInsets.bottom;
sz.width += self.icon.size.width + self.titleEdgeInsets.left + self.titleEdgeInsets.right + self.marginWidth;
return sz;
}
Затем вы можете расположить свои кнопки следующим образом (или генерировать их из кода, не имеет значения):
и пример кода контроллера Swift View:
class MultilineViewController: UIViewController {
@IBOutlet var qTitle: UILabel!
@IBOutlet var button1: DLRadioButton!
@IBOutlet var button2: DLRadioButton!
@IBOutlet var button3: DLRadioButton!
override func viewDidLoad() {
super.viewDidLoad()
for btn in [button1, button2, button3] {
btn?.titleLabel?.lineBreakMode = .byWordWrapping
}
}
}
Для этого результата (я только что добавил еще один V C на панель вкладок примера приложения):
«Круг с переключателем» будет расположен вертикально в центре. Если вы хотите, чтобы он был выровнен по верхней строке текста, это потребовало бы некоторого дополнительного редактирования.
Если вы не планируете использовать другие функции этой библиотеки DLRadioButton
(такие как изображения значков, позиционирование по правому значку, выбор нескольких групп флажков и т. д. c), вы можете захотеть взглянуть на другие реализации (их много) или написать свою собственную.