0
如何以編程方式爲UIButton
繪製圖像,而不是將其作爲靜態資源傳遞?UIButton的自定義繪製
子類化UIButton
和覆蓋drawRect
方法會導致按鈕鬆動Tint行爲和可能的其他繪圖效果。撥打super.drawRect
不會恢復這些行爲。
如何以編程方式爲UIButton
繪製圖像,而不是將其作爲靜態資源傳遞?UIButton的自定義繪製
子類化UIButton
和覆蓋drawRect
方法會導致按鈕鬆動Tint行爲和可能的其他繪圖效果。撥打super.drawRect
不會恢復這些行爲。
我找到了我自己的解決方案。將其繪製到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
}
}