1
私はswiftでカスタムビューでいくつかの文字列を描画しようとしています。私はその結果のJavaとAndroid上で同じことをやって、ここにいています:スウィフトとスウィフトでテキストを回転
を、私はこのグラフィックを取得:
ここに私のコードです:
let π:CGFloat = CGFloat(M_PI)
extension NSString {
func drawWithBasePoint(basePoint: CGPoint, andAngle angle: CGFloat, andAttributes attributes: [String: AnyObject]) {
let textSize: CGSize = self.sizeWithAttributes(attributes)
let context: CGContextRef = UIGraphicsGetCurrentContext()!
let t: CGAffineTransform = CGAffineTransformMakeTranslation(basePoint.x, basePoint.y)
let r: CGAffineTransform = CGAffineTransformMakeRotation(angle)
CGContextConcatCTM(context, t)
CGContextConcatCTM(context, r)
self.drawAtPoint(CGPointMake(textSize.width/2, -textSize.height/2), withAttributes: attributes)
CGContextConcatCTM(context, CGAffineTransformInvert(r))
CGContextConcatCTM(context, CGAffineTransformInvert(t))
}
}
override func drawRect(rect: CGRect) {
elements = delegate!.getRotaryElements(self)
let center = CGPoint(x:bounds.width/2, y: bounds.height/2)
let sectorSize = 2 * π/CGFloat.init(elements.count)
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = NSTextAlignment.Center
for i in 0...elements.count - 1 {
let attrs = [NSFontAttributeName: UIFont(name: "HelveticaNeue-Thin", size: 14)!, NSParagraphStyleAttributeName: paragraphStyle, NSForegroundColorAttributeName:(i % 2 == 0 ? UIColor.redColor():primaryColor)]
elements[i].drawWithBasePoint(center, andAngle: CGFloat(i) * sectorSize + (sectorSize/2), andAttributes: attrs)
}
}
私は同じことをSwiftでどうやって作ることができますか?私はSwift(そしてその点ではiOS)の新人です。あなたが私に与えることができるヒントを感謝します。
あなたの 'drawWithBasePint'メソッドはどのように見えますか? iOS SDKからのものではありません。 – Fujia
@Fujia申し訳ありません。私はそれを含めることを忘れていた。 –