Как создать кнопки AppleTV?

На первый взгляд они выглядят как обычные кнопки UIB, однако под ними есть метка. Также фон кнопки выглядит размытым эффектом.

Поэтому я думаю, что они помещены в CollectionView (горизонтальный). С каждой ячейкой, содержащей UIButton и UILabel. Хотя это может сработать, UIButton, похоже, не получает эффект движения бесплатно.

Это обычное поведение? И если да, то как вы можете создать такой эффект?

1 ответ

Могу поспорить, что это не UICollectionView, а горизонтальный UIStackView пользовательских представлений, в котором UIButton и UILabel выровнены по вертикали.

Вот вам пример использования stackViews:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let stackView = UIStackView()
        stackView.axis = .horizontal
        stackView.distribution = .equalSpacing
        stackView.alignment = .center
        stackView.spacing = 30
        view.addSubview(stackView)

        ["One", "Two", "Three", "Caramba"].forEach {
            let buttonStackView = UIStackView()
            buttonStackView.axis = .vertical
            buttonStackView.distribution = .fillProportionally
            buttonStackView.alignment = .center
            buttonStackView.spacing = 15

            let button = UIButton(type: .system)
            button.setTitle($0, for: .normal)
            buttonStackView.addArrangedSubview(button)

            let label = UILabel()
            label.text = $0
            label.font = UIFont.systemFont(ofSize: 20)
            buttonStackView.addArrangedSubview(label)

            stackView.addArrangedSubview(buttonStackView)
        }

        stackView.translatesAutoresizingMaskIntoConstraints = false
        stackView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        stackView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    }
}

StackView

Наличие настраиваемого вида вместо вертикального вида uistackview для каждой кнопки позволит настраивать ее макет при фокусировке, включая эффект параллакса.

Чтобы добавить эффект параллакса к каждой кнопке в стеке, посмотрите, как получить эффект параллакса на UIButton в tvOS?

Другие вопросы по тегам