Как изменить размер (уменьшить) UIView без пикселизации? - PullRequest
0 голосов
/ 23 марта 2011

В моем приложении я создаю полноэкранный вид, а затем уменьшаю его (примерно до 1/10 его первоначального размера), чтобы впоследствии я мог его анимировать в полном размере.Проблема в том, что при таком размере вид выглядит ужасно и сильно пикселизирован.

Вот полноразмерное представление: enter image description here

А вот сокращенное представление на месте: enter image description here

Я уменьшаю изображение с помощью setFrame: - есть ли способ сказать iOS, чтобы использовать высококачественную интерполяцию?Или я уже получаю интерполяцию самого высокого качества, и это лучшее, что она может сделать?

1 Ответ

1 голос
/ 23 марта 2011

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

Если вы посмотрите, вы увидите, что именно так Apple добивается этого: вместо того, чтобы буквально сжимать представление, они будут захватывать содержимое представления в виде изображения, заменять представление этим изображением, а затем уменьшать изображение. Вы сделали бы это по ряду причин: эффективность (вы можете избавиться от сжатых представлений и заменить их одним UIImageView), скорость, а также качество.

Чтобы сохранить UIView как изображение, вы должны сделать что-то вроде:

UIGraphicsBeginImageContext(myView.bounds.size);
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];
viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

... затем замените вид на изображение и уменьшите его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...