Мне было дано задание создать динамический c «билет» в Swift. Мне передали номер билета, сумму и т. Д. c от API наших серверов, и я должен сгенерировать штрих-код вместе со всеми метками, связанными с этим билетом. Я могу генерировать все необходимые данные без каких-либо проблем.
Проблема
Проблема возникает с ее выкладкой. Мне нужно иметь эскиз для этого билета, а также полноэкранный режим. Похоже, что это лучше всего сделать путем преобразования вида в изображение (верно?), Поскольку оно позволяет использовать такие функции, как масштабирование, наличие миниатюр и т. Д. c. Основной причиной проблемы является ярлыки билетов и штрих-код должны быть расположены вертикально или в основном в альбомном режиме.
Что я пробовал
UIGraphicsBeginImageContext
Я создал изображение вручную с UIGraphicsBeginImageContext()
и связанными API. Это позволяет мне переворачивать каждый вид и преобразовывать его в изображение. Однако этот метод вынуждает меня вручную создавать рамку для каждого вида и теряет всю точность, и это не похоже на правильный способ сделать это, когда мне нужно добавить 10-15 меток к пустому изображению.
AutoLayout
Затем я попытался выложить все в UIView с autolayout и применить CGAffineTransform
к каждому виду, а затем преобразовать весь вид в изображение. Кажется, это работает за исключением того, что я теряю точность и не могу правильно выстроить представления. CGAffineTransform полностью отбрасывает ограничения, и мне приходится экспериментировать с константами ограничений, пока я не получу представление, выглядящее несколько правильно, и даже в этом случае это не слишком хорошо переводит все размеры устройства.
Режим ландшафта
Наконец, я попытался выложить виды в обычном режиме и перевести вид в ландшафтный режим. Помимо количества проблем, которые возникли из-за того, что мое приложение поддерживает только портретный режим, я заставил его работать при представлении представления, но я понятия не имею, как получить представление в виде миниатюр, которое должно отображаться до представления представления заявки. быть в ландшафтном режиме. Если я попытаюсь сделать это, миниатюра получится в портретном режиме, а не в альбомной.
У вас, ребята, есть идеи по поводу лучшего способа сделать это sh или я должен придерживаться одного из методов, которые я пробовал, и пытаться устранить все ошибки? Я могу предоставить код по мере необходимости, но есть много чего, поэтому я не хотел просто добавлять сюда весь код, если в этом не было необходимости.
Ниже приведен пример того, что мне нужно создать, за исключением того, что мне нужно добавить туда дополнительные ярлыки, такие как дата выпуска, срок действия и т. Д. c:
Буду признателен за любую помощь!