【发布时间】:2014-12-03 22:35:43
【问题描述】:
我一直在尝试实现一个 UI 功能,我在一些使用卡片显示信息的应用程序中看到了这种功能。我当前的视图控制器如下所示:
并且用户可以沿 x 轴左右拖动卡片。拖动到屏幕的右侧对卡片的比例没有任何影响(只是改变位置)但是如果用户向左滑动它我想根据它的 y 坐标慢慢减小它的比例(例如比例是最小的当卡片向左最远时,从该点开始变大,直到达到原始大小)。如果卡片被拖到左边足够远,它会淡出,但如果用户没有将它拖得足够远,它的比例会增加并移回中间。到目前为止我尝试过的代码:
- (void)handlePanImage:(UIPanGestureRecognizer *)sender
{
static CGPoint originalCenter;
if (sender.state == UIGestureRecognizerStateBegan)
{
originalCenter = sender.view.center;
sender.view.alpha = 0.8;
[sender.view.superview bringSubviewToFront:sender.view];
}
else if (sender.state == UIGestureRecognizerStateChanged)
{
CGPoint translation = [sender translationInView:self.view];
NSLog(@"%f x %f y",translation.x ,translation.y);
sender.view.center=CGPointMake(originalCenter.x + translation.x, yOfView);
CGAffineTransform transform = sender.view.transform;
i-=0.001;
transform = CGAffineTransformScale(transform, i, i);
//transform = CGAffineTransformRotate(transform, self.rotationAngle);
sender.view.transform = transform;
}
else if (sender.state == UIGestureRecognizerStateEnded || sender.state == UIGestureRecognizerStateCancelled || sender.state == UIGestureRecognizerStateFailed)
{
if(sender.view.center.x>0){
[UIView animateWithDuration:0.2 animations:^{
CGRect rect=[sender.view frame];
rect.origin.x=([self.view frame].size.width/2)-_protoypeView.frame.size.width/2;
rect.size.height=originalHeight;
rect.size.width=originalWidth;
[sender.view setFrame:rect];
i=1.0;
}];
}
[UIView animateWithDuration:0.1 animations:^{
sender.view.alpha = 1.0;
}];
}
}
这看起来非常有问题并且不能正常工作。我也尝试根据翻译改变比例:
else if (sender.state == UIGestureRecognizerStateChanged)
{
CGPoint translation = [sender translationInView:self.view];
NSLog(@"%f x %f y",translation.x ,translation.y);
sender.view.center=CGPointMake(originalCenter.x + translation.x, yOfView);
CGAffineTransform transform = sender.view.transform;
transform = CGAffineTransformScale(transform, translation.x/100, translation.x/100);
//transform = CGAffineTransformRotate(transform, self.rotationAngle);
sender.view.transform = transform;
}
但比例尺要么太大要么太小。任何帮助将不胜感激:)
【问题讨论】:
标签: objective-c xcode uipangesturerecognizer