Добавьте заголовок и подзаголовок на панель навигации, как в Apple Music в IOS 11.

Это IOS 11 вопрос. Я не уверен, что мы можем говорить об этом, поскольку IOS находится в стадии бета-тестирования.

Но я смотрел на эту панель навигации в Apple Music:

введите описание изображения здесь

Я знаю, что они ввели большие заголовки с IOS 11:

navigationController?.navigationBar.prefersLargeTitles = true

Текст «Для вас» выглядит как заголовок, но как они добавили дату? Это API для этого?

Сначала я подумал, что это свойство prompt, но оно устанавливает текст по-прежнему в центре и вверху.

Интересно, это какой-то особый IOS 11 API или они просто использовали представление с двумя метками.


person Adrian    schedule 25.06.2017    source источник
comment
comment
@nathan: спасибо, у меня уже была эта статья в моем списке для чтения, но я еще не проверял ее, глядя на нее сейчас, кажется, что там всего две метки.   -  person Adrian    schedule 26.06.2017
comment
Это поможет вам во всех существующих сценариях текст">stackoverflow.com/questions/37409260/   -  person Shrikant Tanwade    schedule 28.06.2019
comment
У вас есть решение? Не могли бы вы поделиться им со мной? Спасибо.   -  person Johnny Nguyen    schedule 08.08.2019


Ответы (2)


Согласно сеансу 301 WWDC 2017 — Представляем новый магазин приложений около 10:30. , когда отображается взаимодействие «Сегодня», это всего лишь заголовок раздела представления коллекции, а не часть UINavigationBar (его нет). Опять же, это для AppStore, но похоже, что это тот же пользовательский интерфейс, что и для музыки.

Еще одна интересная информация о воссоздании пользовательского интерфейса: Реконструкция нового приложения для магазина приложений – сегодняшний день

person nathan    schedule 26.06.2017
comment
Эта ссылка мертва, не могли бы вы предоставить любую другую живую ссылку? Большое спасибо - person Johnny Nguyen; 08.08.2019

Для всех, кто ищет, как установить субтитры для LargeTitle:

Шаг 1

Добавьте в сцену Контроллер навигации:

  1. Откройте свою раскадровку (Main.storyboard).

  2. Выберите сцену.

  3. Выберите «Редактор» > «Встроить в» > «Контроллер навигации».

Шаг 2

Включите Крупные заголовки:

  1. Выберите «Элемент сцены» > «Элемент» > «Панель навигации».

  2. Отметьте «Предпочитает большие заголовки» в инспекторе атрибутов.

Шаг 3

Добавьте эту функцию в свой код:

 func setTitle(title:String, subtitle:String) -> UIView {

        //Get navigation Bar Height and Width
        let navigationBarHeight = Int(self.navigationController!.navigationBar.frame.height)
        let navigationBarWidth = Int(self.navigationController!.navigationBar.frame.width)

        //Y position for Title and Subtitle
        var y_Title = 0.0
        var y_SubTitle = 0.0

        //Set Y position
        if UIDevice().userInterfaceIdiom == .phone {
            switch UIScreen.main.nativeBounds.height {
            //If screen height equal iPhone 5S and SE
            case 1136:
                y_Title = 46
                y_SubTitle = 36
                print("iPhone 5S and SE")
            //If screen height equal iPhone 6, 6+, 6S, 6S+, 7, 7+, 8, 8+ and X
            case 1334, 1920, 2208, 2436:
                y_Title = 48
                y_SubTitle = 38
                print("iPhone 6, 6+, 6S, 6S+, 7, 7+, 8, 8+ and X")
            default:
                y_Title = 46
                y_SubTitle = 36
                print("Default")
            }
        }

        //Set Font size and weight for Title and Subtitle
        let titleFont = UIFont.systemFont(ofSize: 33, weight: UIFont.Weight.bold)
        let subTitleFont = UIFont.systemFont(ofSize: 12, weight: UIFont.Weight.semibold)

        //Title label
        let titleLabel = UILabel(frame: CGRect(x: 8.5, y: y_Title, width: 0, height: 0))
        titleLabel.backgroundColor = UIColor.clear
        titleLabel.textColor = UIColor.black
        titleLabel.font = titleFont
        titleLabel.text = title
        titleLabel.sizeToFit()

        //SubTitle label
        let subtitleLabel = UILabel(frame: CGRect(x: 8.5, y: y_SubTitle, width: 0, height: 0))
        subtitleLabel.backgroundColor = UIColor.clear
        subtitleLabel.textColor = UIColor.gray
        subtitleLabel.font = subTitleFont
        subtitleLabel.text = subtitle
        subtitleLabel.sizeToFit()

        //Add Title and Subtitle to View
        let titleView = UIView(frame: CGRect(x: 0, y: 0, width: navigationBarWidth, height: navigationBarHeight))
        titleView.addSubview(titleLabel)
        titleView.addSubview(subtitleLabel)

        return titleView

    }

А затем вызовите эту функцию в viewDidLoad():

override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationItem.titleView = setTitle(title: "Title", subtitle: "SUBTITLE")
    }
person Bandyliuk    schedule 13.05.2018