IOS drawrect方法小問題

weixin_34208283發表於2016-03-03

今天在專案中用drawRect畫了一個三角型用於標示section是否摺疊,如下圖

當摺疊的時候會有一個rotation的動畫,旋轉後三角位置大小都發生了改變

override func drawRect(rect: CGRect) {

// Drawing code

//UIRectFill(self.bounds)

let context = UIGraphicsGetCurrentContext()

CGContextSetRGBStrokeColor(context,253,182,13,1);

CGContextSetLineWidth(context, 0);

CGContextBeginPath(context)

//設定起點

CGContextMoveToPoint(context, 0, 0)

CGContextAddLineToPoint(context, self.frame.size.width, 0)

CGContextAddLineToPoint(context, self.frame.size.width, self.frame.size.width)

//結束路徑

CGContextClosePath(context)

CGContextSetFillColorWithColor(context, UIColor.RedColor().CGColor)

CGContextDrawPath(context, CGPathDrawingMode.FillStroke)

}

後來斷點發現在cell重新整理section的時候重新呼叫了三角形的drawRect方法,而我在drawRect(rect: CGRect)方法中用了self.frame而不是用他的rect,後來改成rect後顯示都正常了,猜測是在呼叫下面旋轉時view的相對座標發生了轉換,不能用view自己的frame,要使用drawRect(rect: CGRect)中的rect

self.triangleView.transform = CGAffineTransformMakeRotation(degree)

相關文章