2015-11-23 2 views
0

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

screen shot of cubes

let backLayer = CAShapeLayer() 
    backLayer.anchorPoint = CGPoint(x: 0.5, y: 0.5) 
    backLayer.bounds = backBounds 
    backLayer.backgroundColor = color 
    backLayer.cornerRadius = cornerRadius 
    backLayer.position = position 
    backLayer.shadowColor = UIColor.blackColor().CGColor 
    backLayer.shadowOffset = CGSize(width: shadowWidth, height: shadowWidth) 
    backLayer.shadowOpacity = 0.5 
    backLayer.shadowRadius = shadowRadius 
    backLayer.contentsScale = UIScreen.mainScreen().scale 
    let subPosition = CGPoint(x: backLayer.bounds.height/2 + dipper, y: backLayer.bounds.height/2) 


    // Border Layer 
    let borderLayer = CAShapeLayer() 
    borderLayer.bounds = CGRect(x: 0.0 , y: 0.0, width: backLayer.bounds.width - dipper, height: backLayer.bounds.height) 
    borderLayer.position = subPosition 
    borderLayer.anchorPoint = CGPoint(x: 0.5, y: 0.5) 
    borderLayer.cornerRadius = cornerRadius 
    borderLayer.borderColor = color 
    borderLayer.borderWidth = borderWidth 
    borderLayer.shadowColor = UIColor.blackColor().CGColor 
    borderLayer.shadowOffset = CGSize(width: 1, height: 1) 
    borderLayer.shadowRadius = shadowRadius 
    borderLayer.shadowOpacity = 0.6 
    borderLayer.contentsScale = UIScreen.mainScreen().scale 



    // char layer 
    let charLayer = CATextLayer() 
    charLayer.bounds = borderLayer.bounds 
    charLayer.anchorPoint = CGPoint(x: 0.5, y: 0.5) 
    charLayer.position = subPosition 
    charLayer.string = NSString(UTF8String: char) 
    charLayer.alignmentMode = kCAAlignmentCenter 
    charLayer.wrapped = true 
    charLayer.shadowColor = UIColor.blackColor().CGColor 
    charLayer.shadowOffset = CGSize(width: shadowWidth/3, height: shadowWidth/3) 
    charLayer.shadowRadius = 2 
    charLayer.shadowOpacity = 0.8 
    charLayer.truncationMode = kCATruncationMiddle 
    charLayer.font = "BookmanOldStyle-Bold" 
    charLayer.fontSize = height/1.4 
    charLayer.contentsScale = UIScreen.mainScreen().scale 
+0

Можно ли включить также код для вращения? Тем временем [вы можете попробовать установить] (https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CALayer_class/#//apple_ref/occ/instp/CALayer/allowsEdgeAntialiasing) 'allowEdgeAntialiasing' &' edgeAntialiasingMask 'на слоях ... – Alladinian

+0

@ Алфавитный код для вращения очень простой' container.transform = CGAffineTransformMakeRotation (angle) '' allowEdgeAntialiasing' действительно работает, спасибо !!! –

+0

Рад, что вам помогло. Я также опубликовал его в качестве ответа. – Alladinian

ответ

0

Вы можете попробовать включить краевое сглаживание на слоях. Что-то вроде этого:

layer.allowsEdgeAntialiasing = true 

и в случае, если вы хотите сглаживания на конкретных кромках (в этом примере только левой & справа):

layer.edgeAntialiasingMask = [.LayerLeftEdge, .LayerRightEdge] 

Наконец, стоит отметить, что вы можете установить это в глобальном масштабе, если вам нравится в вашем info.plist.

Ключ является UIViewEdgeAntialiasing, но будьте осторожны, потому что в соответствии с the docs «может оказать заметное влияние на производительность»