Objective-C の iOS プロジェクトを Xcode 6.1 の Swift に書き直そうとしていますが、この Objective-C の行を「翻訳」できません:
CGFloat imageRotation = [[self.imageView valueForKeyPath:@"layer.presentationLayer.transform.rotation.z"] floatValue];
SwiftでUIImageViewの回転値を取得するにはどうすればよいですか?
Objective-C の iOS プロジェクトを Xcode 6.1 の Swift に書き直そうとしていますが、この Objective-C の行を「翻訳」できません:
CGFloat imageRotation = [[self.imageView valueForKeyPath:@"layer.presentationLayer.transform.rotation.z"] floatValue];
SwiftでUIImageViewの回転値を取得するにはどうすればよいですか?
ラップを解除して明示的に にキャストする必要があるオプションvalueForKeyPathを返すため、Swift ではもう少し複雑です。これは、(たとえば) オプションのチェーンとオプションのキャストを組み合わせて行うことができます。NSNumber
let zKeyPath = "layer.presentationLayer.transform.rotation.z"
let imageRotation = (self.imageView.valueForKeyPath(zKeyPath) as? NSNumber)?.floatValue ?? 0.0
最後の "nil-coalescing operator"は、キー パスが設定されていない (または ではない) 場合??に値を に設定します。これは、メッセージを に送信すると も返されるObjective-C の動作を模倣します。0.0NSNumberfloatValuenil0.0