2017-02-20 44 views
3

Я хочу добавить «Подробнее» в конце абзаца. Когда я нажимаю на «Читать дальше», его следует развернуть и отобразить «« Меньше »в конце. Тексты будут свернуты при нажатии на «Меньше» текста.
Подробнее/Меньше с Swift 3

enter image description here
Я нахожу много работы образца в гугле. Но я не понимаю ясно, и большинство проектов реализовано с помощью Objective-C. Я также нахожу его в youtube.
Я хотел бы знать очень пример кода для реализации этого с Swift 3.
Можно ли реализовать без использования какой-либо дополнительной библиотеки?
Пожалуйста, помогите мне.

+0

ли Вы хотите реализовать в Tableview клетки? –

+0

No bro @JeckyModi. В настоящее время я добавляю Label. Этот ярлык посвящен просмотру фильма. Я хочу показать синопсис фильма. Должен ли я добавлять ярлык или текст для резюме? Я не помещаю ни одной таблицы на этой странице. –

+0

Нет, это нормально, ниже ответ правильный. Например, если ваши строки абзаца выше 5 строк, тогда должна быть кнопка для чтения/уменьшения. Если вы хотите сделать это динамически, вам нужно найти высоту этой метки и увеличить ее высоту, как в соответствии с текстом –

ответ

0
  • Создать выход для высоты ограничения вашего messageLabel
  • Телеприставки макета вашей «Подробнее» кнопки messageLabel
  • При нажатии кнопки «Подробнее» Кнопка увеличение высоты ограничения постоянным, при нажатии кнопки «Читать меньше ".

    @IBOutlet weak var btn: UIButton! 
    
    @IBOutlet weak var lblHeight: NSLayoutConstraint! 
    
    var isLabelAtMaxHeight = false 
    
    @IBAction func btnAction(_ sender: Any) { 
        if isLabelAtMaxHeight { 
         btn.setTitle("Read more", for: .normal) 
         isLabelAtMaxHeight = false 
         lblHeight.constant = 70 
        } 
        else { 
         btn.setTitle("Read less", for: .normal) 
         isLabelAtMaxHeight = true 
         lblHeight.constant = getLabelHeight(text: yourSummaryText, width: view.bounds.width, font: yourSummaryLabel.font) 
        } 
    } 
    

Получить высоту текста

func getLabelHeight(text: String, width: CGFloat, font: UIFont) -> CGFloat { 
     let lbl = UILabel(frame: .zero) 
     lbl.frame.size.width = width 
     lbl.font = font 
     lbl.numberOfLines = 0 
     lbl.text = text 
     lbl.sizeToFit() 

     return lbl.frame.size.height 
    } 
+0

Спасибо за мгновенную обратную связь. ваш код. –

+0

Это нормальная метка и кнопка в вашем представлении. Если вы хотите использовать ее в своих представлениях таблицы/коллекции, вам также нужно обновить высоты и ширину ячеек. – Matt

+0

Bro @Matt, вы хотите получить динамический в первую очередь, я должен определить высоту метки, но я не мог знать максимальную высоту этой метки. В тексте обзора фильма может быть более 3 абзацев, которые я думаю. Поэтому, если я определяю высоту метки 300px, текст не будет отображаться, если высота более 300 пикселей. Не так ли? Как это сделать? Извините, я не знаю, как это решить. :( –

 Смежные вопросы

  • Нет связанных вопросов^_^