У меня есть CALayer, что я применяю перспективу к использованию a CGTransform3D
и определение m14
свойство. Когда перспектива применяется, слой неровно оборвал края. Я услышал, что люди упоминают, что добавление прозрачной границы на 1 пкс вокруг слоя поможет с этим. Я не знаю, как сделать это. Я попытался использовать border
и borderWidth
свойства CALayer, но зубчатых краев все еще там. Я также пытался уменьшить реагирование, которое оттянуто 1 пкс на всех сторонах, но оно не помогает также.
Любая справка была бы большой!Спасибо!
Под «Я слышал, как люди упоминали», я полагаю, вы имеете в виду обсуждение этого вопроса . Было предложено отрисовать контент в вашем CALayer так, чтобы он имел прозрачную границу размером в один пиксель за пределами основного контента, используя код
CGContextSetAllowsAntialiasing(theContext, true);
CGContextSetShouldAntialias(theContext, true);
в вашем чертеже Quartz для этого слоя.
В CALayer есть также свойство edgeAntialiasingMask
, но я не заметил никакого влияния при использовании следующего кода:
layer.edgeAntialiasingMask = kCALayerLeftEdge | kCALayerRightEdge | kCALayerBottomEdge | kCALayerTopEdge;
на сглаживание краев преобразованных слоев. См. Также этот вопрос для обсуждения этого, а также того, как они решили свою проблему, используя однопиксельные прозрачные границы вокруг своих изображений.