CGAffineTransformScale 不缩放手势区域
Posted
技术标签:
【中文标题】CGAffineTransformScale 不缩放手势区域【英文标题】:CGAffineTransformScale not scaling a gesture area 【发布时间】:2013-12-10 05:24:16 【问题描述】:我有一个 3x3 的 UIViews 网格,其中添加了 UIGestureRecognizers,排列如下:
它的工作方式是点击一个正方形,使用 CGAffineTransformScale 将其放大 2 倍,并将其覆盖在其他正方形上。问题是由于某种原因,触摸区域的大小与 1.0 比例尺相同。
我使用添加正方形
CGRect squareFrame = CGRectMake(1 + squareSpacing + ((squareDimension + squareSpacing) * i), topMargin, squareDimension, squareDimension);
SquareView *square = [[SquareView alloc] initWithFrame:squareFrame];
[square setPosition:i];
square.layer.zPosition = 0;
[self.view addSubview:square];
[squaresArray addObject:square];
Square 在其 init 中添加了手势识别器:
fingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
[self addGestureRecognizer:fingerTap];
点击的函数执行以下操作:
[UIView animateWithDuration:1.0
delay:0.0
usingSpringWithDamping:0.8
initialSpringVelocity:10.0
options:UIViewAnimationOptionCurveEaseOut
animations:^
CGAffineTransform transform = self.transform;
self.transform = CGAffineTransformScale(transform, 2.0, 2.0);
completion:nil];
我用红色勾勒了触摸区域。我试过玩 zPosition 但我不知道该怎么做才能让它工作,我被卡住了。我希望能够在任何地方点击放大的正方形使其关闭,但我仅限于红色区域。
提前致谢。
编辑:抱歉图片太大了。添加了代码。
史蒂文【问题讨论】:
代码将比几张图片提供更多信息。 @CodaFi 抱歉,已添加。 【参考方案1】:您可以尝试将展开的 UIView 放在父视图的前面,这样您的点击事件就不会被任何重叠的视图捕获:
[parentView bringSubviewToFront:tappedView];
【讨论】:
完美!谢谢。正是我需要的。以上是关于CGAffineTransformScale 不缩放手势区域的主要内容,如果未能解决你的问题,请参考以下文章
使用 CGAffineTransformScale 自定义 UIView 缩放
求解答CGAffineTransformScale造成字体模糊的问题
求解答CGAffineTransformScale造成字体模糊的问题
通过 CGAffineTransformScale 计算的 bounds、frame 和 frame 之间的差异