如何从swift中更改控制器的某些部分的颜色?

我已经创build了一个自定义的UIView.I使它是一些颜色的一部分使用下面的代码作为其他颜色。

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) } } 

现在我的观点有一些颜色的初始部分是灰色的,其余的颜色是不同的。 现在从控制器,如果我尝试将其颜色更改为绿色,它不会从开始位置更改。 原色之后颜色发生了变化。

请让我知道我可以完全设置为绿色背景颜色。

您可以在bottom view使用setNeedsDisplay ,并在设置backgroundColor时重绘它。

setNeedsDisplay()

将接收器的整个边界矩形标记为需要重绘。

您可以使用此方法或setNeedsDisplay(_ :)通知系统您的视图的内容需要重新绘制。 此方法logging请求并立即返回。 该视图直到下一个绘制周期才重新绘制,此时更新所有无效的视图。

例:

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