2016-07-28 3 views
2

以下は私のコードです。私はボタンをクリックしたときに真ん中に少し白いチックを追加したい。プログラミングではどうすればいいですか?画像を使わずに...SSRadioButtonに小さな白いチックを追加するにはどうすればいいですか

import Foundation 
import UIKit 

@IBDesignable 
class SSRadioButton: UIButton { 

private var circleLayer = CAShapeLayer() 
private var fillCircleLayer = CAShapeLayer() 
override var selected: Bool { 
    didSet { 
     toggleButon() 
    } 
} 
/** 
    Color of the radio button circle. Default value is UIColor red. 
*/ 
@IBInspectable var circleColor: UIColor = UIColor.redColor() { 
    didSet { 
     circleLayer.strokeColor = circleColor.CGColor 
     self.toggleButon() 
    } 
} 
/** 
    Radius of RadioButton circle. 
*/ 
@IBInspectable var circleRadius: CGFloat = 5.0 
@IBInspectable var cornerRadius: CGFloat { 
    get { 
     return layer.cornerRadius 
    } 
    set { 
     layer.cornerRadius = newValue 
     layer.masksToBounds = newValue > 0 
    } 
} 

private func circleFrame() -> CGRect { 
    var circleFrame = CGRect(x: 0, y: 0, width: 2*circleRadius, height: 2*circleRadius) 
    circleFrame.origin.x = 0 + circleLayer.lineWidth 
    circleFrame.origin.y = bounds.height/2 - circleFrame.height/2 
    return circleFrame 
} 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    initialize() 
} 

override init(frame: CGRect) { 
    super.init(frame: frame) 
    initialize() 
} 

private func initialize() { 
    circleLayer.frame = bounds 
    circleLayer.lineWidth = 2 
    circleLayer.fillColor = UIColor.clearColor().CGColor 
    circleLayer.strokeColor = circleColor.CGColor 
    layer.addSublayer(circleLayer) 
    fillCircleLayer.frame = bounds 
    fillCircleLayer.lineWidth = 2 
    fillCircleLayer.fillColor = UIColor.clearColor().CGColor 
    fillCircleLayer.strokeColor = UIColor.clearColor().CGColor 
    layer.addSublayer(fillCircleLayer) 
    self.titleEdgeInsets = UIEdgeInsetsMake(0, (4*circleRadius + 4*circleLayer.lineWidth), 0, 0) 
    self.toggleButon() 
} 
/** 
    Toggles selected state of the button. 
*/ 
func toggleButon() { 
    if self.selected { 
     fillCircleLayer.fillColor = circleColor.CGColor 
    } else { 
     fillCircleLayer.fillColor = UIColor.clearColor().CGColor 
    } 
} 

private func circlePath() -> UIBezierPath { 
    return UIBezierPath(ovalInRect: circleFrame()) 
} 

private func fillCirclePath() -> UIBezierPath { 
    return UIBezierPath(ovalInRect: CGRectInset(circleFrame(), 2, 2)) 
} 

override func layoutSubviews() { 
    super.layoutSubviews() 
    circleLayer.frame = bounds 
    circleLayer.path = circlePath().CGPath 
    fillCircleLayer.frame = bounds 
    fillCircleLayer.path = fillCirclePath().CGPath 
    self.titleEdgeInsets = UIEdgeInsetsMake(0, (2*circleRadius + 4*circleLayer.lineWidth), 0, 0) 
} 

override func prepareForInterfaceBuilder() { 
    initialize() 
} 
} 

答えて

0

このような感じですか?

enter image description here

あなたはダニを作るラインのカップルを描くためにUIBezierPathを使用することによって達成行うことができます。もっと魅力的なものや魅力的なものを探していない限り?この質問への答え:Draw a line with UIBezierPath は、線の描画処理を簡単にする素敵な機能を備えています。

+0

私はこの方法を知っています。私は円の中に正確に描く方法を知らない。 –

+0

このケースに該当するコードを表示してください。ありがとうございました。 –

関連する問題