如何绘制矩形并根据电池电量为其填充颜色
How to draw a rectangle and fill it with color based on battery level
我想在 Swift3 中绘制一个矩形,并根据 phone 的电池电量进行绘制,例如,如果电池电量为 100%,则必须完全填充矩形。如果电池电量为 67%,则填充应为该矩形宽度的 67%。
我对 CGRect 库和绘图还很陌生。
这是我目前的尝试:
let layer = CAShapeLayer()
layer.path = UIBezierPath(roundedRect: CGRect(x: battery.frame.origin.x,
y: battery.frame.origin.y,
width: (battery.image?.size.width)!,
height: (battery.image?.size.height)!),
cornerRadius: 0).cgPath
layer.fillColor = UIColor.red.cgColor
view.layer.addSublayer(layer)
电池图标基本上已经在页面上,只有边框,例如以下形状:
------
| |
------
这是一个起点。
将代码粘贴到 Playground 中,然后单击最后一行末尾的 Show Result
class LevelView : UIView {
init(frame: CGRect, level: CGFloat) {
super.init(frame: frame)
self.layer.borderWidth = 1.0
let levelLayer = CAShapeLayer()
levelLayer.path = UIBezierPath(roundedRect: CGRect(x: frame.origin.x,
y: frame.origin.y,
width: frame.width * level,
height: frame.height),
cornerRadius: 0).cgPath
levelLayer.fillColor = UIColor.red.cgColor
self.layer.addSublayer(levelLayer)
}
required init?(coder aDecoder: NSCoder) {
fatalError("Required, but Will not be called in a Playground")
}
}
let view = LevelView(frame: CGRect(x: 0, y: 0, width: 64, height: 32), level: 0.75)
我想在 Swift3 中绘制一个矩形,并根据 phone 的电池电量进行绘制,例如,如果电池电量为 100%,则必须完全填充矩形。如果电池电量为 67%,则填充应为该矩形宽度的 67%。
我对 CGRect 库和绘图还很陌生。
这是我目前的尝试:
let layer = CAShapeLayer()
layer.path = UIBezierPath(roundedRect: CGRect(x: battery.frame.origin.x,
y: battery.frame.origin.y,
width: (battery.image?.size.width)!,
height: (battery.image?.size.height)!),
cornerRadius: 0).cgPath
layer.fillColor = UIColor.red.cgColor
view.layer.addSublayer(layer)
电池图标基本上已经在页面上,只有边框,例如以下形状:
------
| |
------
这是一个起点。
将代码粘贴到 Playground 中,然后单击最后一行末尾的 Show Result
class LevelView : UIView {
init(frame: CGRect, level: CGFloat) {
super.init(frame: frame)
self.layer.borderWidth = 1.0
let levelLayer = CAShapeLayer()
levelLayer.path = UIBezierPath(roundedRect: CGRect(x: frame.origin.x,
y: frame.origin.y,
width: frame.width * level,
height: frame.height),
cornerRadius: 0).cgPath
levelLayer.fillColor = UIColor.red.cgColor
self.layer.addSublayer(levelLayer)
}
required init?(coder aDecoder: NSCoder) {
fatalError("Required, but Will not be called in a Playground")
}
}
let view = LevelView(frame: CGRect(x: 0, y: 0, width: 64, height: 32), level: 0.75)