如何维护对UIview的转换

时间:2013-11-11 15:45:13

标签: ios objective-c cgaffinetransform

我有一个视图,在那个视图中我有一个UIImageview但是在这个UIImageview里面我还有3个UIImageview,这个3 UIImageview我可以拖动它们并调整它们的大小,问题是当我调整其中一个时它们全部返回到原来的位置,为什么会发生这种情况?

更新: 我用它来拖动图像

- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {
 CGPoint translation = [recognizer translationInView:_photo];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
                                     recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:_photo];}

这用于调整大小,使用滑块

- (IBAction)sizePhoto:(UISlider *)sender {

 switch (cambiaSize) {
 case 1:
    [_imagen1 setTransform:CGAffineTransformMakeScale(sender.value, sender.value)];
    break;
case 2:
    [_imagen2 setTransform:CGAffineTransformMakeScale(sender.value, sender.value)];
    break;
case 3:
    [_imagen3 setTransform:CGAffineTransformMakeScale(sender.value, sender.value)];
    break;}}

我也用它来调整大小

_imagen1.transform = CGAffineTransformScale(self.view.transform,sender.value, sender.value);

我也用这个

水平翻转图像
_imagen2.transform = CGAffineTransformScale(_imagen2.transform,1.0, 1.0);

我希望在执行任何此类操作时保持转型...

2 个答案:

答案 0 :(得分:1)

这可能是使用自动布局的结果。如果直接更改对象的框架,当某些其他操作导致视图重绘时,它将恢复为约束定义的框架。您需要关闭自动布局,或通过修改其约束来更改视图的位置。

答案 1 :(得分:0)

使用CGAffineTransformScale而不是CGAffineTransformMakeScale。 'MakeScale'使用应用比例创建一个全新的身份变换,而前一种方法只是将比例应用于预先存在的变换。

    UIImageView *imageView              = [[UIImageView alloc] init];
    CGFloat exampleValueA = 90.0f, exampleValueB = 90.0f;
    imageView.transform                 = CGAffineTransformScale(imageView.transform, exampleValueA, exampleValueB);