0
欲实现上述在Swift3其中60%是用户的当前电池电平。随着电池电量的增加,绿色必须填满。我已经有了2个边框的图像,即最外边的边框,并且其中的边框为1个图像。我想在其中填充填充颜色。我遇到了麻烦,必须硬编码值,因为它没有正确对齐。
最外面的边框和内边界的图像被称为电池,我把它放在xcode中的是3x,2x,1x。
let view1 = LevelView(frame: CGRect(x: battery.frame.origin.x,
y: battery,
width: battery.layer.preferredFrameSize().width - 25,
height: battery.layer.preferredFrameSize().height/2 - 5),
level: CGFloat(BatteryUtil.sharedInstance.batteryLevel()))
battery.layer.addSublayer(view1.layer)
这里是LevelView代码:
import UIKit
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: 148/255.0, green: 201/255.0, blue: 61/255.0, alpha: 1).cgColor
self.layer.addSublayer(levelLayer)
}
required init?(coder aDecoder: NSCoder) {
fatalError("Required, but Will not be called in a Playground")
}
}
我很新的这一点,如何使它所需的方法是什么?
如果我直接添加到故事板,然后我将如何设置电池电量为需要从代码做了什么? – fscore
只需创建从故事板到视图控制器的引用即可。然后你可以调用levelView.batteryLevel = BatteryUtil.sharedInstance.batteryLevel()(假设从0到1返回一个CGFloat)你不必将它添加到故事板,你可以在代码中创建它并将它添加为子视图。无论哪种方式工作。只要保留一个参考,以便更新电池电量。 – picciano
你拖动了哪个元素来分配levelview?当我的剪辑被删除 – fscore