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 之间的差异

如何使用 CGAffineTransform Scale 从右到左添加动画和放大动画

2022/7/21训练总结