成都网站建设设计

将想法与焦点和您一起共享

iOS实现滑动弧形菜单的思路与方法-创新互联

前言

创新互联建站是一家专注于网站设计、网站制作遂宁服务器托管的网络公司,有着丰富的建站经验和案例。

最近公司的项目中需要用到弧形菜单,起初自定义UICollectionView的layout,但实现出的效果并不符合项目中要求按钮始终垂直于界面、界面始终保持几个按钮等一系列需求(是我水平不够),后来索性用UIView写了一个弧形可滑动菜单。

效果如下:

iOS实现滑动弧形菜单的思路与方法

实现思路:

     1、根据思路可以自己确定到半径与圆心的每个按钮所在的x点,可根据数学公式求得y点

     2、给按钮添加拖动手势UIPanGestureRecognizer,根据偏移量x计算出对应偏移弧线的距离,根据圆的运动轨迹赋值给按钮的x 并更新 y

     3、结束拖动手势的时候计算偏移距离、根据是否划到下一个按钮的一半的width来实施动画更新按钮的center

实现细节:

已知圆心、半径与x值求y值:(x-a)^2 + (y - b)^ 2 = r2。

用到的UIPanGestureRecognizer的三种状态:UIGestureRecognizerStateBegan\UIGestureRecognizerStateChanged\UIGestureRecognizerStateEnded

用UIPanGestureRecognizer的locationInView方法来确定当前点的位置

if(pgr.state==UIGestureRecognizerStateBegan){

  self.endMove = NO;

  self.beginPoint=[pgr locationInView:self];

 }else if (pgr.state==UIGestureRecognizerStateChanged){
  self.movePoint= [pgr locationInView:self];

  self.moveX = sqrt(fabs(self.movePoint.x - self.beginPoint.x) * fabs(self.movePoint.x - self.beginPoint.x) + fabs(self.movePoint.y - self.beginPoint.y) * fabs(self.movePoint.y - self.beginPoint.y));
}

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:iOS实现滑动弧形菜单的思路与方法-创新互联
地址分享:http://chengdu.cdxwcx.cn/article/dpsjie.html