2

Objective-C の iOS プロジェクトを Xcode 6.1 の Swift に書き直そうとしていますが、この Objective-C の行を「翻訳」できません:

CGFloat imageRotation = [[self.imageView valueForKeyPath:@"layer.presentationLayer.transform.rotation.z"] floatValue];

SwiftでUIImageViewの回転値を取得するにはどうすればよいですか?

4

1 に答える 1

8

ラップを解除して明示的に にキャストする必要があるオプション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

于 2014-10-29T14:39:48.213 に答える