Как вырезать длинный текст, пока он не уместится в NSTextView, а также добавить ... в конце вырезанного текста? - PullRequest
0 голосов
/ 15 сентября 2018

Как я могу вырезать текст, пока он не уместится в NSTextView? Точно, пока он не подходит. А также затем добавить ... в конце этого вырезанного текста?

Вот мой компонент:

import PureLayout

class Card: NSCollectionViewItem {
    let textView = NSTextView()

    var card: (text: String)? {
        didSet {
            guard isViewLoaded else { return }

            if let text = card?.text {
                textView.string = text
            } else {
                textView.string = ""
            }
        }
    }

    func configureTextView() {
        textView.font = NSFont(name: "SF Pro Display", size: 12)
        textView.isEditable = false
        textView.isFieldEditor = false

        textView.autoPinEdge(toSuperviewEdge: .top, withInset: 10)
        textView.autoPinEdge(toSuperviewEdge: .right, withInset: 10)
        textView.autoPinEdge(toSuperviewEdge: .bottom, withInset: 10)
        textView.autoPinEdge(toSuperviewEdge: .left, withInset: 10)
    }

    override func viewDidAppear() {
        super.viewDidAppear()

        view.layer?.borderWidth = 1
        view.layer?.borderColor = .black

        view.addSubview(textView)

        configureTextView()
    }
}

Вот пример текста записи:

enter image description here

Вот как это должно выглядеть в NSTextView после обрезки:

enter image description here

1 Ответ

0 голосов
/ 15 сентября 2018

Вы можете использовать textView.textContainer!.lineBreakMode = .byTruncatingTail для этого. Для этого вам может потребоваться NSTextView текстовый контейнер в init(frame:textContainer:).

https://developer.apple.com/documentation/uikit/nslinebreakmode

...