Разделить строку в uilabel несколько строк Swift - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу разделить свой динамический текст UILabel, как показано ниже, например,

Текст UILabel -

Aptitude проверяет навыки английского языка, соответствующие вашим требованиям.Это позволяет организации / учреждению оценить все четыре навыка английского языка - чтение, письмо, аудирование и говорение вместе с основным обязательным компонентом (грамматика и словарный запас) или проверить только один навык, например, чтение.

для разделения на массив строк с каждым переводом строки даже при каждом измерении размера экрана, будь то iphone или ipad.

Я хочу получить массив строк -

["Aptitude проверяет знания английского языка, соответствующие вашим требованиям. Это позволяет организации / учреждению", "оценить все четыре навыка английского языка- читать, писать, слушать и говорить вместе с основным "," обязательным компонентом (грамматика и словарь) или тестировать только один навык, например, чтение. "]

С каждым разрывом строки в UILabel, который мне нуженразделить строку независимо от размера динамического экрана

1 Ответ

0 голосов
/ 21 февраля 2019

Ваш подход может быть сложным, вместо этого я рекомендую вам использовать другие методы, такие как sizeWithAttributes

extension String {

func widthOfString(usingFont font: UIFont) -> CGFloat {
    let fontAttributes = [NSAttributedString.Key.font: font]
    let size = self.size(withAttributes: fontAttributes)
    return size.width
}

func heightOfString(usingFont font: UIFont) -> CGFloat {
    let fontAttributes = [NSAttributedString.Key.font: font]
    let size = self.size(withAttributes: fontAttributes)
    return size.height
}

func sizeOfString(usingFont font: UIFont) -> CGSize {
    let fontAttributes = [NSAttributedString.Key.font: font]
    return self.size(withAttributes: fontAttributes)
    }
}

Предполагая, что вы знаете ширину и размер шрифта в ярлыке, вы можете использовать некоторыелогика, как показано ниже:

    let inputText = "Aptitude tests English skills relevant to your requirements. It enables an organisation / institution to assess all four English skills – reading, writing, listening and speaking together with the core mandatory component (grammar and vocabulary) or test just one skill, e.g. reading."
    let labelWidth = UIScreen.main.bounds.width
    var resultArray:[String] = []
    var readerString = ""
    for i in 0 ..< inputText.count
    {

        readerString += inputText[i]
        //Check if overflowing boundries and wrapping for new line
        if readerString.widthOfString(usingFont: UIFont.systemFont(ofSize: 14)) >= labelWidth {
            resultArray.append(readerString)
            readerString = ""
        }
 }
...