Как Сгладить Слои в iPhoneOS

У нас были Деньги Reiner Knizia за несколько месяцев теперь. Это сделано вполне прилично, и таким образом, мы обновляли его, поскольку время позволяет. Однако одна вещь продолжает прослушивать меня. Я никогда не мог заставить свои многоуровневые карты сглаживаться правильно.

Вот образец:

alt text

Карты, которые положены прямо, являются очень чистыми, но каждый раз, когда они повернуты, черные линии вокруг карт зубчатые. Я попробовал это и в зависимости от строк, неявных к иллюстрациям и в зависимости от линий, проведенных через drawRect: и они оба делают то же самое. Я попробовал edgeAntiAliasingMask, и он не делает вещи насколько я могу сказать. Я попробовал masksToBounds за набор подуровней к НЕ и ДА.

Прямо сейчас моя карта настраивается как CALayer, который имеет sub-CALayers для передней стороны и спины, плюс для нескольких других вещей как светящаяся маска и темнеющая маска. Вот некоторые отрывки кода:

   CArdLayer *theCardLayer = [CArdLayer layer];
   theCardLayer.edgeAntialiasingMask = kCALayerLeftEdge | kCALayerRightEdge | kCALayerBottomEdge | kCALayerTopEdge;

   theCardLayer.front = [CALayer layer];
   theCardLayer.front.edgeAntialiasingMask = kCALayerLeftEdge | kCALayerRightEdge | kCALayerBottomEdge | kCALayerTopEdge;
   theCardLayer.front.bounds = theCardLayer.bounds;
   theCardLayer.front.masksToBounds = YES;
   theCardLayer.front.contents = (id)[cardDrawing CGImage];

   [theCardLayer addSublayer:theCardLayer.front];

И т.д...

Какие-либо идеи о том, как заставить карты на самом деле сгладиться?

7
задан Community 8 February 2017 в 14:22
поделиться

2 ответа

Лучший результат, которого я мог достичь, - это сделать то, что я предложил в своем комментарии: я увеличил каждое (прозрачное) изображение на 1 пиксель с каждой стороны. С таким небольшим запасом карты лучше сочетались с фоном.

Итак, это не совсем ответ кода iPhone, но тот, который, тем не менее, работает на iPhone.

Вот кадр «после», который вы можете сравнить с «до», приведенный выше: alt text

3
ответ дан 7 December 2019 в 03:14
поделиться

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

Итак, IMHO, это на самом деле проблема композиции карт и фона.

Быстрый просмотр документации предлагает некоторые подсказки (только предположения, попробуйте их):

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

Проверьте, как это будет выглядеть, если для параметра «Непрозрачность» установлено значение «почти непрозрачное» (может быть, 0,9?).

Проверьте свойство Маска . Он должен позволить вам создать маску, подобную альфа-каналу, с мягкими границами - хотя я знаю, что это не совсем то, что вам нужно ...

1
ответ дан 7 December 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: