我有一个视图,在那个视图中我有一个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);
我希望在执行任何此类操作时保持转型...
答案 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);