首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CAShapeLayer分辨率

CAShapeLayer分辨率
EN

Stack Overflow用户
提问于 2015-11-23 10:06:20
回答 1查看 178关注 0票数 0

请帮助理解有关层及其解决方案的问题。我画立方体,每个立方体由三层(背景、边框和字母)组成,旋转后的边线看上去是台阶的。

立方体屏幕截图

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-23 14:33:19

您可以尝试在图层上启用边缘反混叠。就像这样:

代码语言:javascript
复制
layer.allowsEdgeAntialiasing = true

如果您想要在特定的边缘上进行反别名(在本例中,只有左和右):

代码语言:javascript
复制
layer.edgeAntialiasingMask = [.LayerLeftEdge, .LayerRightEdge]

最后,值得注意的是,如果您愿意,可以在info.plist中全局设置它。

关键是UIViewEdgeAntialiasing,但是根据医生们的说法,要小心原因“它会对性能产生明显的影响”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33868272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档