我有一个加号(+),目前正以蓝色显示,但是我想使其透明,以便用户可以看到背景。加层添加到更大的视图。将plus图层设置为clear
颜色不能解决问题。
class AddButtonView: UIView {
...
private func setupPlusLayer() {
let path = UIBezierPath()
path.move(to: CGPoint(x: plusButton.frame.midX, y: plusButton.frame.midY-20))
path.addLine(to: CGPoint(x: plusButton.frame.midX, y: plusButton.frame.midY+20))
path.move(to: CGPoint(x: plusButton.frame.midX-20, y: plusButton.frame.midY))
path.addLine(to: CGPoint(x: plusButton.frame.midX+20, y: plusButton.frame.midY))
path.usesEvenOddFillRule = true
let shapeLayer = CAShapeLayer()
shapeLayer.fillRule = .evenOdd
shapeLayer.path = path.cgPath
shapeLayer.strokeColor = UIColor.blue.cgColor
shapeLayer.fillColor = UIColor.blue.cgColor
shapeLayer.lineWidth = 4
// Add that `CAShapeLayer` to your view's layer:
self.layer.addSublayer(shapeLayer)
}
}
如何使加号透明?
答案 0 :(得分:1)
尝试使用带有+透明效果的.png图像,它将正常工作,并且您无需绘制加号。
答案 1 :(得分:1)
您可以通过以下方式实现这一目标:
import sys
from PyQt5.QtWidgets import *
class widget(QWidget):
def __init__(self):
super().__init__()
treewidget = QTreeWidget(self)
label = QLabel(self)
label.setStyleSheet("background-color: white; min-height: 200px;")
grid = QGridLayout()
grid.setSpacing(10)
grid.addWidget(treewidget, 1, 0)
grid.addWidget(label, 2, 0)
self.setLayout(grid)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
f = widget()
sys.exit(app.exec_())
(CAShapeLayer
); circleShape
相同颜色的倒置蒙版层(inverted
)。在这种情况下,您需要一个circleShape
,它具有完全相同的圆路径和加路径。另外,不要忘记设置CGMutablePath
; inverted.fillRule = .evenOdd
)的图层; plusShape
作为子图层以查看图层; circleShape
; circleShape.mask = inverted
作为子图层以查看图层。就是这样!现在您有了透明加唱歌。示例: