2016-09-30 7 views
0

私は自分のUIViewControllerにIBにおける通常のUIViewを入れて、以下のdrawメソッドでUIViewのサブクラスにビューを設定している:フレームのUIView

override func draw(_ rect: CGRect) { 
    super.draw(rect) 

    self.isOpaque = false 
    self.backgroundColor?.setFill() 
    UIRectFill(rect) 
    let insetRect = self.bounds.insetBy(dx: 0, dy: 4) 
    UIColor.clear.setFill() 
    UIRectFill(insetRect) 
} 

期待される結果は、バックグラウンドでなければなりませんカラー(白)は、ビューの上下に線として表示されます。それは確かに何が起こるかです。しかし、私は透明なインセットの長方形が欲しいです、それは私がクリアするために色を設定する理由です。しかし、代わりに結果は黒です。イメージを参照してください。

enter image description here

答えて

0

私はUIViewのサブクラスを、それを行うための別の方法を見つけて、この時間は、私は途中で予想される透明性を得る:

override init(frame: CGRect) { 
    super.init(frame: frame) 
    self.backgroundColor = UIColor.clear 
} 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
} 



override func draw(_ rect: CGRect) { 
    super.draw(rect) 

    let top = UIBezierPath(rect: CGRect(x: 0, y: 0, width: self.bounds.width, height: 4)) 
    UIColor.white.setFill() 
    top.fill() 
    let bottom = UIBezierPath(rect: CGRect(x: 0, y: self.bounds.height - 4, width: self.bounds.width, height: 4)) 
    bottom.fill() 
} 
関連する問題