我正在构建基于按钮的菜单。我正在纯粹用代码构建它们。
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,顶部是图像或文本。
有什么建议吗?
答案 0 :(得分:0)
问题可能是您的subLayer
具有不同的.zPosition
属性值。来自
将新的子图层对象添加到当前图层。添加子层 到图层子层列表的末尾。这导致子层 出现在任何兄弟姐妹的顶部,其中包含相同的值 zPosition属性。
来自here。您可以仔细检查.zPosition
属性是否具有所有三个子图层的相同值。
如果这不是问题,请尝试使用insertSubLayer:above
代替insertSubLayer:atIndex
(请参阅documentation)。