用手指IOS调整UIImageView的大小

Posted

技术标签:

【中文标题】用手指IOS调整UIImageView的大小【英文标题】:Resize UIImageView with finger IOS 【发布时间】:2014-05-16 15:41:47 【问题描述】:

我有一个 UIImageView(和一个 UITextView),我正在使用加号和减号按钮更改它们的高度。但是,我想像在大多数程序中那样做,在我的视图周围出现一个框,用户可以拖动它的一角来调整大小。只需要拖动一个角。相反是固定的。你是怎么做到的?

【问题讨论】:

【参考方案1】:

另一种方式 - 是通过 GestureRecognizer。在某些任务中,我像这样调整图像大小:

- (void)resizeImage:(UIPinchGestureRecognizer *)recognizer

    if ([recognizer state] == UIGestureRecognizerStateBegan)
    previousScale = [recognizer scale];

    UIView *viewToResize = recognizer.view;
    if ([recognizer state] == UIGestureRecognizerStateChanged)
    
        CGFloat currentScale = [[viewToResize.layer valueForKeyPath:@"transform.scale"] floatValue];
        CGFloat newScale = 1 -  (previousScale - [recognizer scale]);
        newScale = MIN(newScale, MAX_SCALE / currentScale);
        newScale = MAX(newScale, MIN_SCALE / currentScale);
        CGAffineTransform transform = CGAffineTransformScale([viewToResize transform], newScale, newScale);
        viewToResize.transform = transform;
        previousScale = [recognizer scale];
    

iosobjective-c

【讨论】:

我读到这是现在完成任务的更好方法。与使用 touchesBegan 和 touchesEnded 相比,您可以使用更少的代码调整视图大小 是的,这是更简单的方法 :) 如果您对此代码有任何疑问 - 请随时提问。【参考方案2】:

我以前从未这样做过,但我认为您必须覆盖视图的 touchesBegan 和 touchesMoved 函数。当您启动 touchesBegan 方法时,请确保您正在触摸正确的视图,(Imageview 或 UItextView)在其声明中设置一个布尔值。 imTouchingOneOrTheOther。因此,当您现在点击 touchesMoved 功能时,您可以相应地调整框架的大小。我会尝试首先使用基于 UIView 块的动画来调整框架,如果看起来不合适,那么我会使用 coreAnimation。让我知道结果如何。

【讨论】:

所以你建议使用touchesBegan、moved等方法? 是的,但不是调整框架,而是使用边界。 Bounds 应该是您应该调整的正确属性。 有人能解释为什么他们给了我反对票吗?如果是,为什么? 在这里,通过谷歌搜索,我发现这篇文章解释得很清楚。 ***.com/questions/8460119/… 所以现在无论谁给我的答案是否定的,我都会感激它加分

以上是关于用手指IOS调整UIImageView的大小的主要内容,如果未能解决你的问题,请参考以下文章

在 UIImageView IOS 上绘制圆圈的最佳方法

在 iOS 中调整 UIImageView 的大小

iOS UIImageView 调整大小问题

Objective-C:捕获后使用原始图像大小

iPhone SDK 用 2 根手指缩放/调整图像大小!!帮助

使 UIImageView 及其 UIImage 按比例缩放而无需额外的填充