当前位置: 首页 > 知识库问答 >
问题:

如何用单指旋转图像视图并调整其大小

康秋月
2023-03-14

我正在开发一个应用程序,它具有通过拖动右下角按钮来调整和旋转imageview的功能。

我看到一个应用程序,它有一个功能,如果我们拖动右下角的按钮对角,imageview大小已经调整,或者如果我们拖动按钮向左或向右的方向,imageview已经按照方向旋转。我希望在我的应用程序中实现此功能

我正在努力实现单指旋转以及调整imageview的大小。

我可以通过拖动它的右下角按钮成功地实现调整图像视图的大小。但是我没有足够的知识来为图像视图添加旋转

请以正确的方式引导我。

我添加了下面的代码,用于通过拖动其右角来调整图像视图的大小。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];

    touchStart = [[touches anyObject] locationInView:imageView];
    isResizingLR = (containerVw.bounds.size.width - touchStart.x < kResizeThumbSize && containerVw.bounds.size.height - touchStart.y < kResizeThumbSize);

}



- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
CGPoint touchPoint = [[touches anyObject] locationInView:imageView];
CGPoint previous=[[touches anyObject]previousLocationInView:imageView];

UITouch *touch = [[event allTouches] anyObject];


float  deltaWidth = touchPoint.x-previous.x;
float  deltaHeight = touchPoint.y-previous.y;


    if (isResizingLR) {
        containerVw.frame = CGRectMake(containerVw.frame.origin.x, containerVw.frame.origin.y,touchPoint.x + deltaWidth, touchPoint.y + deltaWidth); 
        imageView.frame = CGRectMake(imageView.frame.origin.x, imageView.frame.origin.y,touchPoint.x + deltaWidth, touchPoint.y + deltaWidth);                      
        dragIm.frame = CGRectMake(containerVw.frame.size.width-10, containerVw.frame.size.height-10,20,20);


    if (!isResizingLR) {
        containerVw.center = CGPointMake(containerVw.center.x + touchPoint.x touchStart.x,containerVw.center.y + touchPoint.y - touchStart.y);
    }
}

共有3个答案

邹锦
2023-03-14

这可能会有所帮助,https://github.com/zedoul/ZDStickerView.

IQStickerView具有OneFingerRotation、Scale、Resize和Close功能

特征:

  1. 单指旋转比例
孔睿
2023-03-14

我已修复此问题,并将此控件上载到cocoacontrols中

http://www.cocoacontrols.com/controls/tdresizerview

和示例代码

https://www.dropbox.com/s/yb0vzy0wao52bgt/SampeResizeView.zip

更新的答案

https://www.cocoacontrols.com/controls/zdstickerview

索吕恭
2023-03-14

我遇到了和你一样的障碍,所以我开发了自己的模块ZDStickerView。这将是一个很好的参考。

首先,确保视图的自动调整大小Mask应该是灵活的。

    autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight

否则,调整大小将无法正常工作。

其次,我建议您使用“CGAffineTransformMakeRotation”和“atan2”函数来解决旋转问题,如下所示:

    float ang = atan2([recognizer locationInView:self.superview].y - self.center.y,
                      [recognizer locationInView:self.superview].x - self.center.x);
    float angleDiff = deltaAngle - ang;
    self.transform = CGAffineTransformMakeRotation(-angleDiff);

第三,确保使用相对坐标,如下所示:

    self.transform = CGAffineTransformMakeRotation(-angleDiff);
 类似资料:
  • 当使用sharp image resize库https://github.com/lovell/sharp for Node.js时,图像将被旋转。 我没有写.rotate()的代码,那么为什么要旋转它,我怎样才能阻止它旋转呢? 我使用的是AWS提供的无服务器图像大小调整示例:https://github.com/awslabs/serverless-image-resizing。如果缩略图不存在

  • 问题内容: 在我的应用程序中,我在div中有一个图像,一个按钮。 我想旋转显示的图像,并在使用jquery单击按钮时保存旋转的图像。 我已经使用了代码: http://code.google.com/p/jquery-rotate/ 和jQuery代码: html代码: 当我使用上述代码时,有两个图像,一个是旧图像,另一个是旋转图像。 在这里我想旋转相同的图像并仅显示旋转的图像。并将旋转的图像保存

  • 我有一个iPhone应用程序,它使用一个UINavigationController来呈现一个深入的界面:首先是一个视图,然后是另一个视图,最多四层。我希望前三个视图限制为纵向,并且只允许最后一个视图旋转为横向。当从第四个视图返回到第三个视图时,第四个视图是横向的,我希望所有的东西都旋转回纵向。 在iOS5中,我简单地在我的每个视图控制器中定义了以返回YES作为允许的方向。一切都如上所述工作,包括

  • 问题内容: 我正在从磁盘读取图像,并将其显示在一行中。图像文件大于行中需要显示的图像文件。由于我需要将RAM 缓存在内存中以加快访问速度,因此我希望它们的大小只能与s 一样大(85x85 dip) 现在我正在读文件 位图= BitmapFactory.decodeFile(file); 而ImageView负责缩放和裁剪它 android:scaleType =“ centerCrop” AFAI

  • 问题内容: 我需要调整PNG,JPEG和GIF文件的大小。如何使用Java做到这一点? 问题答案: 加载图像后,你可以尝试:

  • 问题内容: 我在这里使用Go调整大小包:https://github.com/nfnt/resize 我正在从S3中提取图像,如下所示: // this gives me data []byte 之后,我需要调整图像大小: // problem is that the original_image has to be of type image.Image 将图像上传到我的S3存储桶 // pro