Это окончательный результат, который я получаю: -
мое изображение
Код: Выделить всё
private func setupControls() {
undoButton = createButton(imageName: "arrow.uturn.backward", target: self, action: #selector(undoAction))
redoButton = createButton(imageName: "arrow.uturn.forward", target: self, action: #selector(redoAction))
deleteButton = createButton(imageName: "trash", target: self, action: #selector(deleteAction))
rewindButton = createButton(imageName: "backward.end", target: self, action: #selector(rewindAction))
playPauseButton = createButton(imageName: "play", target: self, action: #selector(playPauseAction))
fastForwardButton = createButton(imageName: "forward.end", target: self, action: #selector(fastForwardAction))
fullscreenButton = createButton(imageName: "arrow.up.left.and.arrow.down.right", target: self, action: #selector(fullscreenAction))
let leftStack = NSStackView(views: [undoButton, redoButton, deleteButton])
leftStack.spacing = 9
let centerStack = NSStackView(views: [rewindButton, playPauseButton, fastForwardButton])
centerStack.spacing = 9
addSubview(leftStack)
addSubview(centerStack)
addSubview(fullscreenButton)
leftStack.translatesAutoresizingMaskIntoConstraints = false
centerStack.translatesAutoresizingMaskIntoConstraints = false
fullscreenButton.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
leftStack.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 20),
leftStack.topAnchor.constraint(equalTo: topAnchor, constant: 20),
centerStack.centerXAnchor.constraint(equalTo: centerXAnchor),
centerStack.topAnchor.constraint(equalTo: topAnchor, constant: 20),
fullscreenButton.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -20),
fullscreenButton.topAnchor.constraint(equalTo: topAnchor, constant: 20)
])
}
private func createButton(imageName: String, target: Any?, action: Selector?) -> NSButton {
let button = NSButton(image: NSImage(systemSymbolName: imageName, accessibilityDescription: nil)!, target: target, action: action)
button.bezelStyle = .texturedRounded
button.isBordered = false
button.imageScaling = .scaleProportionallyDown
button.contentTintColor = .white
// Set button size to 30x30
button.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
button.widthAnchor.constraint(equalToConstant: 30),
button.heightAnchor.constraint(equalToConstant: 30)
])
let config = NSImage.SymbolConfiguration(pointSize: 8, weight: .regular)
if let configuredImage = NSImage(systemSymbolName: imageName, accessibilityDescription: nil)?.withSymbolConfiguration(config) {
button.image = configuredImage
}
button.wantsLayer = true
button.layer?.cornerRadius = 15 // Half of 30 for perfect circle
button.layer?.borderWidth = 1
button.layer?.borderColor = NSColor(red: 0x88/255.0, green: 0x88/255.0, blue: 0x88/255.0, alpha: 0.5).cgColor
return button
}
сравнить
Подробнее здесь: https://stackoverflow.com/questions/798 ... ton-appkit