В Swift 3, UIBarButtonItem
имеет инициализатор под названием init(barButtonSystemItem:target:action:)
.init(barButtonSystemItem:target:action:)
имеет следующее объявление:
convenience init(barButtonSystemItem systemItem: UIBarButtonSystemItem, target: Any?, action: Selector?)
Инициализирует новый элемент, содержащий указанный системный элемент.
UIBarButtonSystemItem
перечисление, которое предлагает много случаев, включая done
, play
, add
или cancel
.Однако, в зависимости от ваших потребностей, вы также можете выбрать flexibleSpace
или fixedSpace
кейсов.
flexibleSpace
кейс имеет следующую декларацию:
Пустое пространство для добавления между другими элементами.Пространство распределяется поровну между другими предметами.Другие свойства элемента игнорируются при установке этого значения.
fixedSpace
case имеет следующее объявление:
Пробел, добавляемый между другимиПредметы.При установке этого значения используется только свойство width
.
Следовательно, вы можете программно создавать фиксированные и гибкие элементы кнопок пробела, как показано ниже:
let flexibleSpace = UIBarButtonItem(
barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace,
target: nil,
action: nil
)
let fixedSpace = UIBarButtonItem(
barButtonSystemItem: UIBarButtonSystemItem.fixedSpace,
target: nil,
action: nil
)
fixedSpace.width = 30 // Set width with the appropriate value
В качестве примера приведенный ниже код игровой площадки показывает, как добавить нижнюю полосу с двумя центрированными кнопками панели воспроизведения и паузы, разделенными фиксированным пространством 30 в контроллере вида:
import PlaygroundSupport
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
title = "Home"
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Show navigation controller’s built-in toolbar
navigationController?.setToolbarHidden(false, animated: false)
// Create UIBarButtonItems
let flexibleSpace1 = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let playItem = UIBarButtonItem(barButtonSystemItem: .play, target: self, action: nil)
let fixedSpace = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
fixedSpace.width = 30
let pauseItem = UIBarButtonItem(barButtonSystemItem: .pause, target: self, action: nil)
let flexibleSpace2 = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
// Set the view controller toolbar items
setToolbarItems([flexibleSpace1, playItem, fixedSpace, pauseItem, flexibleSpace2], animated: false)
}
override func viewWillDisappear(_ animated: Bool) {
// Hide navigation controller’s built-in toolbar
navigationController?.setToolbarHidden(true, animated: true)
super.viewWillDisappear(animated)
}
}
let viewController = ViewController()
let navigationController = UINavigationController(rootViewController: viewController)
PlaygroundPage.current.liveView = navigationController
Предварительный просмотр контроллера представления в редакторе Playground assistant с помощью Просмотр ▸ Помощник редактора ▸ Показать помощник редактора
