0

UIImageViews の配列があり、それらのスケールを変換しようとしていますが、呼び出しを正しく突き止めることができないようです。

これが私が試したことです:

[[self.Images objectAtIndex:kGeneral] setTransform:CGAffineTransformMakeScale(1.2f, 1.2f)];

[[self.Images objectAtIndex:kGeneral] transform] = CGAffineTransformMakeScale(1.2f, 1.2f);

シンプルなものが欠けているようです。いずれにせよ、私が受け取るコンパイル時エラーは次のとおりです。

Multiple methods 'setTransform:' found with mismatched results, parameter type or attributes.
4

3 に答える 3

0

これを試して:

UIImageView *imageView = [self.Images objectAtIndex:kGeneral];
imageView.transform = CGAffineTransformMakeScale(1.2f, 1.2f);
于 2013-10-19T18:47:56.113 に答える
0

代わりに次のコードを試してください。

((UIImageView *)[self.Images objectAtIndex:kGeneral]).transform = CGAffineTransformMakeScale(1.2f, 1.2f);

配列内のオブジェクトをUIImageViewにキャストして、コンパイラがプロパティ「変換」を探す必要があるオブジェクトの種類を知る必要があります。

于 2013-10-19T18:49:19.240 に答える
0

tl; 博士

[(UIImageView*)self.Images[kGeneral] setTransform:CGAffineTransformMakeScale(1.2f, 1.2f)];

また、プロパティ/変数に大文字の名前を使用しないでください。に変更Imagesimagesます。


説明

このsetTransform:メソッドは、署名が異なる複数のクラスに存在します。たとえばCALayer、プロパティも持っていtransformますが、それはCATransform3D型です。

objectAtIndex:type のオブジェクトを返すidため、コンパイラはどちらをsetTransform:参照しているかを判断できません。

明示的なキャストを追加すると、型のあいまいさがなくなり、コンパイラが満足します。

要するに、お気づきのように、私は最新の配列アクセス構文を使用しています。これは実際には何も変わりませんが、コードが読みやすくなります。

于 2013-10-19T18:52:06.387 に答える