菜鸟教程小白 发表于 2022-12-12 12:30:38

ios - 将平移手势识别器限制为特定圆圈


                                            <p><p>我正在使用在 ImageView 中绘制的圆形渐变作为我的颜色选择器的色轮。我想将平移手势识别器的 <code>shouldReceiveTouch:</code> 限制在渐变的位置,以便 View 的其余部分不受平移手势识别器的影响。 </p>

<p>如何指定与渐变半径匹配的圆形边界?</p>

<p>编辑:我尝试了以下代码但没有效果:</p>

<pre><code>if (sender.numberOfTouches)
    {
      CGSize size = CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height/3);

      float radius = MIN(size.width, size.height)/2;

      ;
      ;
      ;
      ;
      ;
      ;




      CGPoint lastPoint = ;
      CGPoint center = CGPointMake((size.width/2), (size.height /2));
      CGPoint delta = CGPointMake(lastPoint.x - center.x,lastPoint.y - center.y);
      CGFloat angle = (delta.y == 0 ? delta.x &gt;= 0 ? 0 : M_PI : atan2(delta.y, delta.x));
      angle = fmod(angle,M_PI * 2.0);
      angle += angle &gt;= 0 ? 0 : M_PI * 2.0;
      if((lastPoint.x - center.x) + (lastPoint.y - center.y)/2 &lt; radius)
      {
            UIColor *color = ;
            if ()
            {
                NSLog(@&#34;Color value - R : %g G : %g : B %g&#34;, r*255, g*255, b*255);
            }
            float red = r;
            float green = g;
            float blue = b;
            rText.text = ;
            gText.text = ;
            bText.text = ;


            colorView.backgroundColor = ;
            rSlider.value = red*255;
            gSlider.value = green*255;
            bSlider.value = blue*255;
            alphaText.text = ;
            brightnessText.text = ;
            saturationText.text = ;

      }





    }
</code></pre>

<p>}</p>

<p>它似乎在渐变的右侧工作并停止接收颜色更新,左侧和下侧仍在更新。我需要适当限制 <code>panGesture</code> 以使其停止干扰我的 <code>UISliders</code>。</p>

<p>有什么想法吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您只需要对触摸事件进行点击测试,看看它是否在圆圈的区域内。为此,您需要知道圆的中心点及其半径。</p>

<p>这个现有问题涵盖了这样做的一般方程式:</p>

<p> <a href="https://stackoverflow.com/questions/481144/equation-for-testing-if-a-point-is-inside-a-circle" rel="noreferrer noopener nofollow">Equation for testing if a point is inside a circle</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 将平移手势识别器限制为特定圆圈,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/17566704/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/17566704/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 将平移手势识别器限制为特定圆圈