次の行に到達したときに単純な円を描画しようとしていますが、「Double [はstartAngle = 0.0
path.addArcWithCenter(center, radius: radius, startAngle: 0.0, endAngle: Float(M_PI) * 2.0, clockwise: true)
Swiftで0.0を「キャスト」してCGFloatにするにはどうすればよいですか?
私が書いている完全な機能:
func drawCircle() {
// Drawing code
var bounds:CGRect = secondView.bounds
var center = CGPoint()
center.x = bounds.Origin.x + bounds.size.width / 2.0
center.y = bounds.Origin.y + bounds.size.height / 2.0
var radius = (min(bounds.size.width, bounds.size.height) / 2.0)
var path:UIBezierPath = UIBezierPath()
path.addArcWithCenter(center, radius: radius, startAngle: CGFloat(0.0), endAngle: Float(M_PI) * 2.0, clockwise: true)
path.stroke()
}
CGFloatにする必要がある値をCGFloatに変換します。
path.addArcWithCenter(center, radius: CGFloat(radius), startAngle: CGFloat(0.0), endAngle: CGFloat(M_PI) * 2.0, clockwise: true)
リテラルを渡すだけの場合は、startAngleを変換する必要はないでしょう。また、これはCスタイルのキャストではありませんが、実際には異なるSwiftタイプ間で変換することに注意してください。
編集:あなたの機能全体を見て、これは動作します。
func drawCircle() {
// Drawing code
var bounds:CGRect = self.view.bounds
var center = CGPoint()
center.x = bounds.Origin.x + bounds.size.width / 2.0
center.y = bounds.Origin.y + bounds.size.height / 2.0
var radius = (min(bounds.size.width, bounds.size.height) / 2.0)
var path:UIBezierPath = UIBezierPath()
path.addArcWithCenter(center, radius: CGFloat(radius), startAngle: CGFloat(0.0), endAngle: CGFloat(Float(M_PI) * 2.0), clockwise: true)
path.stroke()
}
CGFloat(0.0)を介してキャストする必要があります。 Obj-Cでは、CGFloatはターゲットに応じてfloatまたはdoubleにキャストされる(64ビットと32ビット)ため、Xcode 6のベータ版全体で異なる評価を行うようにCGFloatが調整されました。 CGFloatに数値をキャストするSwiftで入力する必要があります。CGFloatを使用するには、floatまたはdoubleが保証されないため(環境に依存するため)。このように、= Swiftは適合をスローせず、「タイプ」に対して安全です。
たぶんそれは良い考えではないかもしれませんが、NSNumberを使用してDoubleをFloatに、次にCGFloatに変換しました。
let myFloat = NSNumber.init(value: myDouble).floatValue
let myCGFloat = CGFloat(myFloat)