【问题标题】:When I change the size of an image with an slider the image moves当我使用滑块更改图像的大小时,图像会移动
【发布时间】:2013-11-08 17:18:13
【问题描述】:

我有一个可以在屏幕上拖动的 imageview,我添加了一个滑块来更改 imageview 大小并且它可以工作,但是当我更改大小时,imageview 总是返回到原始位置,并且它不再在我拖动它的地方,可能有什么问题?这是我更改大小的代码

- (IBAction)sizePhoto:(UISlider *)sender {
[_imagen1 setTransform:CGAffineTransformMakeScale(sender.value, sender.value)];}

这就是我拖动图像的方式

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];

这就是我旋转图像的方式

recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation);
recognizer.rotation = 0;

【问题讨论】:

  • 你是否通过设置翻译变换来改变它的位置?
  • 是的,使用handlePan
  • 当然,缩放变换替换视图的变换。您需要将它们组合起来(或使用布局约束或框架进行翻译)。
  • 如何将它们结合起来?我将编辑问题以添加我如何拖动和旋转图像

标签: ios objective-c uiimageview uislider


【解决方案1】:

这个想法是将当前转换与更改结合起来,因此它保留了用户已经完成的操作。您在旋转时正确执行此操作。以同样的方式使用比例:

_imagen1.transform = CGAffineTransformScale(_imagen1.transform, scaleFactor, scaleFactor);

【讨论】:

  • 我用 sender.value 替换了比例因子,bur 现在图像正在改变大小但效果不佳,它消失了......
【解决方案2】:
// pass your slider value: below code


 CGFloat scale = slider.value;
 CGAffineTransform theTransform = CGAffineTransformMakeScale(scale, scale);
  myImageView.transform = theTransform;

【讨论】:

    猜你喜欢
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    相关资源
    最近更新 更多