我创建了一个新的子视图类来进行绘图 我已经覆盖了函数drawRect()但我无法改变 我使用背景方法的子视图的背景颜色,但它确实没有用!
self.headerView
答案 0 :(得分:4)
您需要在drawRect之前设置背景颜色。调用drawRect时,已经绘制了背景。如果您需要能够在drawRect中设置背景颜色,只需自己绘制,就像绘制蓝色矩形轮廓的方式一样。
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.backgroundColor = UIColor.blackColor()
}
class AbedView:UIView {
override func drawRect(rect: CGRect) {
let color = UIColor.blueColor()
let cgrRect = CGRect(x: 0, y: 0, width: 100, height: 100)
let newView = UIBezierPath(rect: cgrRect)
print(newView.bounds)
color.set()
newView.lineWidth = 5
newView.stroke()
}
}
答案 1 :(得分:2)
创建此视图时不必设置背景颜色。
创建视图后的任何时候,只需在视图上调用此行代码,它的背景颜色就会改变
view.backgroundColor = UIColor.blackColor()
答案 2 :(得分:1)
跟随Gary Makin的想法,这对我有用。我有一个GameBoardView
类的UIView
视图,它是class GameBoardView: UIView {
override func drawRect(rect: CGRect) {
self.backgroundColor = UIColor.greenColor()
}
}
的子类。
当我这样做时,它不会覆盖我在故事板中设置的颜色:
ViewController
但是当我在viewWillAppear()
class ViewController: UIViewController {
// some code
override func viewWillAppear(animated: Bool) {
// more code
gameBoard.backgroundColor = UIColor.greenColor()
// some other code
}
// still more code
}
方法中添加该行时,它会起作用:
/home/api/order/1
希望有所帮助
答案 3 :(得分:0)
我创建了一个"准备"函数,我在创建视图时调用:
class myView: UIView {
func prepare() {
backgroundColor = UIColor.blueColor()
}
override func drawRect(rect: CGRect) {
// custom stuff
}
}
用法(这将返回要在tableview标头中使用的新视图):
let myView = myView()
myView.prepare()
return myView
我确信有更简洁的方法可以做到这一点,但我并不想弄乱初始值设定项,创建扩展程序或者使用图层进行捣乱。这很简单而且有效。据我所知,唯一的缺点是你无法在drawrect:time时动态确定颜色。但如果您在初始化期间知道颜色,那么这应该可行。
享受。