我创建了一个自定义UIView。我正在使用下面的代码将其作为其他颜色的某些部分。
import Foundation
class BottomView:UIView {
override func draw(_ rect: CGRect) {
self.fillColor(with: .gray, width: 20)
}
func fillColor(with color:UIColor,width:CGFloat) {
let topRect = CGRect(x:0, y:0, width : width, height: self.bounds.height);
color.setFill()
UIRectFill(topRect)
}
}
现在我的视图中有一些初始部分颜色为灰色&其余的颜色是不同的。现在从控制器,如果我尝试将其颜色更改为绿色,它不会从开始位置更改。它的颜色在初始颜色后发生了变化。
请让我知道如何将背景颜色完全设置为绿色。
答案 0 :(得分:2)
您可以在setNeedsDisplay
上使用 bottom view
,并在设置backgroundColor
时重新绘制。
<强> setNeedsDisplay()强>
将接收者的整个边界矩形标记为需要重绘。
您可以使用此方法或setNeedsDisplay(_ :)来通知 您需要重新绘制视图内容的系统。这种方法使 请求的注释并立即返回。视图不是 实际重绘直到下一个绘图周期,此时全部 无效的视图已更新。
示例:强>
<强> 1。 BottomView
class
class BottomView:UIView
{
var showGray = true
override func draw(_ rect: CGRect)
{
if showGray
{
self.fillColor(with: .gray, width: 20)
}
}
func fillColor(with color:UIColor,width:CGFloat)
{
let topRect = CGRect(x:0, y:0, width : width, height: self.bounds.height);
color.setFill()
UIRectFill(topRect)
}
}
<强> 2。在UIViewController
self.bottomView.showGray = false
self.bottomView.setNeedsDisplay()
self.bottomView.backgroundColor = .green