У меня есть UIToolbar , который содержит несколько UIBarButtonItem s, с различными размерами шрифта.Все элементы, кажется, выровнены по определенной базовой линии.В зависимости от высоты панели инструментов, определенный размер шрифта имеет тенденцию появляться в вертикальном центре.Но другие предметы вне центра.Как настроить эти другие элементы так, чтобы они отображались по центру по вертикали?
Примечание. Все элементы имеют текстовый вид, без изображений.Многие другие ответы очень старые и / или предназначены только для изображений.Большинство функций / методов obj.c легко конвертируются в Swift.
Я размещаю элементы, используя:
func addLabel(_ text: String, textcolor: UIColor?, font: UIFont?, items: inout [UIBarButtonItem], verticalOffset: CGFloat) -> Int {
let item = UIBarButtonItem(title: text, style: UIBarButtonItem.Style.plain, target: nil, action: nil)
if font != nil {
item.setTitleTextAttributes([NSAttributedString.Key.font : font!], for: UIControl.State.normal)
}
if textcolor != nil {
item.tintColor = textcolor!
}
items.append(item)
return items.count-1
}
Я пробовал (это не сработает):
- setTitleTextAttributes с .baselineOffset
- setTitlePositionAdjustment
- setBackgroundVerticalPositionAdjustment
let item = UIBarButtonItem(customView: itemView)
где itemView - это UIView
Возможно, последний, где я оборачиваю UILabel в представление, затем устанавливаю элемент, так как customView может работать, но для меня это показалось повсеместно,Я попытался заменить содержимое основного метода на:
let itemView = UIView(frame: CGRect(x: 0, y: verticalOffset, width: 0, height: 0))
let itemText = UILabel()
itemText.text = text
itemText.textColor = textcolor
itemText.font = font
itemText.sizeToFit()
itemView.translatesAutoresizingMaskIntoConstraints = false
let item = UIBarButtonItem(customView: itemView)
itemView.addSubview(itemText)
Как я могу сместить некоторые элементы на панели инструментов?