如何从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
- Swift原生函数将数字作为hexstring
- 使用Apple的Reachability在Swift中检查远程服务器的可达性
- Swift – 整合GameCenter使用排行榜
- 如何对swift XCODE上的string进行AES 128encryption并将其作为POST发送给服务器?
- 在Swift中创build一个UIView的副本
- 触发UITapGestureRecognizer后,NSLayoutConsstraint常量不会影响视图
- RestKit.h从来没有在Xcode项目中find
- Swift:如何记住进一步的http请求的cookie
- 在Swift 4中从后台线程调用UI API并运行Firebase 4