【发布时间】:2014-05-16 15:41:47
【问题描述】:
我有一个 UIImageView(和一个 UITextView),我正在使用加号和减号按钮更改它们的高度。但是,我想像在大多数程序中那样做,在我的视图周围出现一个框,用户可以拖动它的一角来调整大小。只需要拖动一个角。相反是固定的。你是怎么做到的?
【问题讨论】:
标签: ios
我有一个 UIImageView(和一个 UITextView),我正在使用加号和减号按钮更改它们的高度。但是,我想像在大多数程序中那样做,在我的视图周围出现一个框,用户可以拖动它的一角来调整大小。只需要拖动一个角。相反是固定的。你是怎么做到的?
【问题讨论】:
标签: ios
另一种方式 - 是通过 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];
}
}
【讨论】:
我以前从未这样做过,但我认为您必须覆盖视图的 touchesBegan 和 touchesMoved 函数。当您启动 touchesBegan 方法时,请确保您正在触摸正确的视图,(Imageview 或 UItextView)在其声明中设置一个布尔值。 imTouchingOneOrTheOther。因此,当您现在点击 touchesMoved 功能时,您可以相应地调整框架的大小。我会尝试首先使用基于 UIView 块的动画来调整框架,如果看起来不合适,那么我会使用 coreAnimation。让我知道结果如何。
【讨论】: