строковый формат печати таблицы динамически в swift

#ios #swift #swift5

#iOS #быстрый #swift5

Вопрос:

Я новичок в концепции получения в swift. Я хочу распечатать квитанцию, как показано на рисунке ниже.

https://i.stack.imgur.com/ZB4bV.jpg

Мой код:

 let result = formattedString(left: "MAXIS Hotlink", right: "25.00",left1: "1") 
      "n"   formattedString(left:"DIGI Prepaid", right: "5.00",left1: "0") 
      "n"   formattedString(left:"CELCOM Xpax", right: "5.00",left1: "2")

print(result)


func formattedString(left: String, right: String,left1: String, width: Int = 20) -> String {
      // The `max` call returns 0 if `width - left.count` is negative
      let filler = String(repeating: " ", count: max(0, width - left.count))
      return left   filler   right   filler   left1
}
 

Но квитанция не выровнена должным образом при увеличении длины. Я хочу напечатать строку, как показано ниже imagetype. Пожалуйста, кто-нибудь, помогите мне

Комментарии:

1. Выравнивание строки с помощью пробелов — худший выбор. Есть вкладки или несколько меток / текстовых полей.

Ответ №1:

если вы хотите распечатать квитанцию на изображении, форматированная строка не является хорошим решением. Вместо этого у вас должен быть шаблон jpg. Затем вы должны нарисовать информацию поверх шаблона. В этом случае вы можете использовать пустой файл jpg соответствующего размера для получения квитанции.

Например;

 func getReceipt() -> UIImage? {
    
    guard let image = UIImage(named: "receipt.jpg") else {return nil}

    let scale = UIScreen.main.scale
    UIGraphicsBeginImageContextWithOptions(image.size, false, scale)

    let toFromFontAttributes = [
        NSAttributedString.Key.font: UIFont(name: "HelveticaNeue-Thin", size: 16.0)!,
        NSAttributedString.Key.foregroundColor: UIColor.black
        ] as [NSAttributedString.Key: Any]
            
    let subjectMessageAttributes = [
        NSAttributedString.Key.font: UIFont(name: "HelveticaNeue-Thin", size: 16.0)!,
        NSAttributedString.Key.foregroundColor: UIColor.black
        ] as [NSAttributedString.Key: Any]
    
    image.draw(in: CGRect(origin: CGPoint.zero, size: image.size))

    let itemRect = CGRect(origin: CGPoint(x: 50, y: 50), size: image.size)
    let itemText = "item"
    itemText.draw(in: itemRect, withAttributes: toFromFontAttributes)
    
    let quantityRect = CGRect(origin: CGPoint(x: 120, y: 50), size: image.size)
    let quantityText = "Quantity"
    quantityText.draw(in: quantityRect, withAttributes: toFromFontAttributes)

    ......
    // add other items
    ......

    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return newImage ?? nil
}
 

Комментарии:

1. у вас должно быть изображение шаблона для рисования / записи квитанции поверх него. Вы можете создать пустой белый файл jpg на своем компьютере, а затем переименовать его во что-то вроде «receipt.jpg «или все, что ты захочешь. Наконец, вы должны скопировать этот файл в свой проект.