【问题标题】:CALayer within UIButtonUIButton 中的 CALayer
【发布时间】:2016-03-15 00:44:25
【问题描述】:

我正在构建一个基于按钮的菜单。我只是在代码中构建它们。

let menu00 = UIButton()
menu00.frame=menuHome
let imageSubLayer = CALayer()
imageSubLayer.contents = UIImage(named: "menuIcon.png")!.CGImage
menu00.layer.insertSublayer(drawHexFill(menu00.frame, fillColor: UIColor.lightGrayColor()), atIndex: 2)
menu00.layer.insertSublayer(drawHexBorder(menu00.frame, fillColor: UIColor.clearColor()), atIndex: 1)
menu00.layer.insertSublayer(imageSubLayer, atIndex: 0)
menu00.titleLabel!.text="MENU"
menu00.titleLabel!.textColor=UIColor.whiteColor()
menu00.tag=100
self.view.addSubview(menu00)

drawHexFill 和 drawHexBorder 是 UIBezierPath 绘制图形图层的两个方法,我这样做是因为按钮可能有不同的颜色边框和填充视情况而定。

我遇到的问题是文本和图像不可见。如果我将图像添加为按钮图像,它是可见的,但是在十六进制边框和十六进制填充层之后。

我已经为所有对象尝试了不同的位置“atIndex”,但根本无法得到我想要的。我希望 hexFill 在背景中, hexBorder 下一个,图像或文本在顶部。

有什么建议吗?

【问题讨论】:

  • 你搞定了吗?如果是这样,请考虑添加答案并关闭问题,或者,如果给定的答案解决了您的问题;通过接受来结束问题。

标签: ios uibutton swift2 calayer


【解决方案1】:

问题可能是您的subLayers 的.zPosition 属性值不同。来自

将新的子图层对象添加到当前图层。添加了子图层 到图层的子图层列表的末尾。这导致子层 出现在任何具有相同值的兄弟之上 zPosition 属性

来自here。您可以仔细检查 .zPosition 属性对于您的所有三个子层是否具有相同的值。


如果这不是问题,请尝试使用insertSubLayer:above 而不是insertSubLayer:atIndex(请参阅documentation)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多