मैं गोल कोनों और एक ड्रॉप शैडो के साथ एक बटन बनाने की कोशिश कर रहा हूं । कोई फर्क नहीं पड़ता कि मैं कैसे स्विच करता हूं, बटन सही ढंग से प्रदर्शित नहीं होगा। मैंने कोशिश की है masksToBounds = false
और masksToBounds = true
, लेकिन या तो कोने त्रिज्या काम करता है और छाया नहीं करता है या छाया काम करता है और कोने त्रिज्या बटन के कोनों को क्लिप नहीं करता है।
import UIKit
import QuartzCore
@IBDesignable
class Button : UIButton
{
@IBInspectable var masksToBounds: Bool = false {didSet{updateLayerProperties()}}
@IBInspectable var cornerRadius : CGFloat = 0 {didSet{updateLayerProperties()}}
@IBInspectable var borderWidth : CGFloat = 0 {didSet{updateLayerProperties()}}
@IBInspectable var borderColor : UIColor = UIColor.clearColor() {didSet{updateLayerProperties()}}
@IBInspectable var shadowColor : UIColor = UIColor.clearColor() {didSet{updateLayerProperties()}}
@IBInspectable var shadowOpacity: CGFloat = 0 {didSet{updateLayerProperties()}}
@IBInspectable var shadowRadius : CGFloat = 0 {didSet{updateLayerProperties()}}
@IBInspectable var shadowOffset : CGSize = CGSizeMake(0, 0) {didSet{updateLayerProperties()}}
override func drawRect(rect: CGRect)
{
updateLayerProperties()
}
func updateLayerProperties()
{
self.layer.masksToBounds = masksToBounds
self.layer.cornerRadius = cornerRadius
self.layer.borderWidth = borderWidth
self.layer.borderColor = borderColor.CGColor
self.layer.shadowColor = shadowColor.CGColor
self.layer.shadowOpacity = CFloat(shadowOpacity)
self.layer.shadowRadius = shadowRadius
self.layer.shadowOffset = shadowOffset
}
}
drawRect
बहुत अच्छा विचार नहीं है। उन्हें अंदर करने के लिए बेहतर हैinitWithCoder
।