2015-11-23 40 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)'allowsEdgeAntialiasing'&'edgeAlliiasingMask '在图层上... – Alladinian

+0

@Alladinian旋转代码非常简单'container.transform = CGAffineTransformMakeRotation(angle)'allowedEdgeAntialiasing'真的有用,谢谢! –

+0

很高兴帮助你。我也发布了它作为答案。 – Alladinian

回答

0

你可以尝试启用的层的边缘抗锯齿。事情是这样的:

layer.allowsEdgeAntialiasing = true 

,倘若你想反锯齿特定的边缘(在这个例子中只剩&右):

layer.edgeAntialiasingMask = [.LayerLeftEdge, .LayerRightEdge] 

最后,值得注意的是,你可以在全球范围如果设置此你喜欢你的info.plist。

的关键是UIViewEdgeAntialiasing,但要根据the docs小心原因“它可能会对性能产生显着影响