2016-11-09 31 views
0

draw方法下面的代碼內註釋掉視圖顯示了圓形的,但是當它未被註釋出視圖爲矩形再次顯示出來。我可以將draw的主體註釋掉,它只是一個空的方法,但視圖仍然會顯示爲矩形。iOS的舍入的UIView角隨拉伸啓用

我試過將cornerRadius一行移至draw的末尾,draw開始,drawInnerCircle結束,但無濟於事。我想知道是否仍然有一種方法可以使draw方法啓用視圖四捨五入?

import UIKit 
class IconView: UIView { 

    override init(frame:CGRect) { 
     super.init(frame : frame) 
     self.backgroundColor = UIColor(red: 47/255, green: 49/255, blue: 53/255, alpha: 1.0) 
     self.layer.cornerRadius = self.frame.size.height/2.0 
    } 
    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 

    override func draw(_ rect: CGRect) { 
     drawInnerCircle() 
    } 

    internal func drawInnerCircle() ->() { 
     let halfSize:CGFloat = min(self.frame.size.width/2, bounds.size.height/2) 
     let desiredLineWidth:CGFloat = 1 // your desired value 
     let circlePath = UIBezierPath(
      arcCenter: CGPoint(x:halfSize,y:halfSize), 
      radius: CGFloat(halfSize - 3), 
      startAngle: CGFloat(0), 
      endAngle:CGFloat(M_PI * 2), 
      clockwise: true) 

     let shapeLayer = CAShapeLayer() 
     shapeLayer.path = circlePath.cgPath 
     shapeLayer.fillColor = UIColor.clear.cgColor 
     shapeLayer.strokeColor = UIColor(red: 96/255, green: 99/255, blue: 105/255, alpha: 1.0).cgColor 
     shapeLayer.lineWidth = desiredLineWidth 
     layer.addSublayer(shapeLayer) 
    } 
} 
+0

你有沒有試過給'shapeLayer'角也? – Tj3n

+0

的shapeLayer是一個小圈子所以它在技術上沒有角 – stumped

+0

親愛難倒了,目前你隨時添加一個新圖層,你的觀點,當它被重繪(這可能會很經常發生)。請刪除舊圖層或保留「舊」圖層。 – Lepidopteron

回答

1

添加以下內容:

self.layer.masksToBounds =真

線以下:

self.layer.cornerRadius = self.frame。 size.height/2.0

順便說一下,上述評論描述了一些問題。