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

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 回答
0

试试这个代码:

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

您必须将数组中的对象转换为 UIImageView 以使编译器知道他应该在哪种对象上查找属性“转换”。

于 2013-10-19T18:49:19.240 回答
0

尝试这个:

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