#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 «или все, что ты захочешь. Наконец, вы должны скопировать этот файл в свой проект.