Показать то, что AVSpeechSynthesizer показывает в виде субтитров с помощью Swift

У меня есть массив с котировками, и я использую кнопку, чтобы запустить воспроизведение случайной цитаты из массива.

Мне интересно, как бы я хотел, чтобы выбранная случайная цитата также отображалась в ViewController, чтобы люди могли читать то, что читает синтезатор речи?


person esaruoho    schedule 26.05.2019    source источник
comment
строка, которую вы сгенерировали как случайную, установила ее на метку   -  person Sh_Khan    schedule 26.05.2019
comment
Добавьте метку к вашему представлению и установите label.text = randomQuote.   -  person vacawama    schedule 26.05.2019
comment
@vacawama Хорошо, я смог сделать это, установив let randomQuote = nTeslaQuoteArray[nTSelection] . Теперь мне просто нужно изменить размер метки, чтобы она всегда соответствовала содержимому :)   -  person esaruoho    schedule 26.05.2019
comment
@vacawama есть ли способ использовать Subtitles.sizeToFit(), чтобы метка была разделена на 3 или более строк, а не только на одну строку до бесконечности?   -  person esaruoho    schedule 26.05.2019
comment
stackoverflow.com/q/8355175/1630618   -  person vacawama    schedule 26.05.2019


Ответы (2)


Как мне сделать так, чтобы выбранная случайная цитата также отображалась в ViewController, чтобы люди могли читать то, что читает синтезатор речи?

Лучший способ выделить озвученное слово — использовать метод speechSynthesizer:willSpeakRangeOfSpeechString:utterance: протокола AVSpeechSynthesizerDelegate.

Вместо того, чтобы копировать и вставлять сюда фрагмент кода, взгляните на этот полный и полезный пример (ObjC и Swift), который отображает озвученное слово жирным шрифтом с синтезом речи.

... есть ли способ использовать Subtitles.sizeToFit(), чтобы метка была разделена на 3 или более строк, а не просто «одна строка до бесконечности»?

В Xcode Interface Builder - Attributes Inspector установите значение свойства метки Lines на 0 и адаптируйте свои ограничения, чтобы получить многострочное представление. введите здесь описание изображения

person XLE_22    schedule 27.05.2019

Добавьте метку к вашему представлению и установите для нее текст цитаты.

quoteLabel.text = randomQuote

Чтобы отобразить метку в нескольких строках, добавьте:

label.numberOfLines = 0
person Ludyem    schedule 27.05.2019