2015-06-21 211 views
0

如何以編程方式爲UIButton繪製圖像,而不是將其作爲靜態資源傳遞?UIButton的自定義繪製

子類化UIButton和覆蓋drawRect方法會導致按鈕鬆動Tint行爲和可能的其他繪圖效果。撥打super.drawRect不會恢復這些行爲。

回答

0

我找到了我自己的解決方案。將其繪製到UIImage中,並將其作爲正常狀態的背景圖像傳遞給按鈕允許動態創建圖像並保留UIButton效果。

class MyButton: UIButton { 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder)  
     let image = createImage(self.bounds)   
     self.setBackgroundImage(image, forState: UIControlState.Normal) 
    } 


    func createImage(rect: CGRect) -> UIImage{ 

     UIGraphicsBeginImageContext(rect.size) 

     let context = UIGraphicsGetCurrentContext(); 

     //just a circle 
     CGContextSetFillColorWithColor(context, UIColor.whiteColor().CGColor); 
     CGContextFillEllipseInRect(context, CGRectInset(rect, 4, 4)); 
     CGContextStrokePath(context); 

     let image = UIGraphicsGetImageFromCurrentImageContext(); 

     UIGraphicsEndImageContext() 

     return image 
    } 
}