最近公司的项目中需要用到弧形菜单,起初自定义UICollectionView的布局,但实现出的效果并不符合项目中要求按钮始终垂直于界面,界面始终保持几个按钮等一系列需求(是我水平不够),后来索性用UIView写了一个弧形可滑动菜单。
<>强效果如下:强>
如果(pgr.state==UIGestureRecognizerStateBegan) { 自我。endMove=没有; 自我。beginPoint=(pgr locationInView:自我); }else if (pgr.state==UIGestureRecognizerStateChanged) { 自我。movePoint=(pgr locationInView:自我); 自我。moveX=叹г渤?self.movePoint。x - *晶圆厂(self.movePoint self.beginPoint.x)。x - self.beginPoint.x) +晶圆厂(self.movePoint。y - self.beginPoint.y) *晶圆厂(self.movePoint。y - self.beginPoint.y)); }
计算出偏移的x点后要根据起始点来判断用户是向左滑动还是向右滑动
如果(self.movePoint.x> self.beginPoint.x) { 自我。moveNum +=self.moveX; 其他}{ 自我。moveNum -=self.moveX; }
之后判断判断是否超过了所有按钮所在的范围并赋值
如果(自我。moveNum祝辞0){ 自我。moveNum=0; } 如果(自我。moveNum & lt;- - - - - - ((SCREEN_WIDTH - 20 - subViewW)/(自我。showBtnCount - 1)) * (self.subViewArray。计数- self.showBtnCount)) { 自我。moveNum=- ((SCREEN_WIDTH - 20 - subViewW)/(自我。showBtnCount - 1)) * (self.subViewArray。数- self.showBtnCount); }
将偏移量赋值给x并更新y值
///中心点 CGFloat yy=0.0; CGFloat xx=0.0; CGFloat保证金=0.0;///子视图中x点 UIView *视图=self.subViewArray [0]; CGFloat subCenterX=view.frame.size.width/2; (NSInteger我=0;i原理大概就是这些
然后把项目中的效果直接做了简单的封装传了个演示
Github地址:https://github.com/xuuhan/HXCamberMenu
本地下载地址:http://xiazai.jb51.net/201705/yuanma/HXCamberMenu (jb51.net) . rar
以上就是这篇文章的全部内容了,实现的效果和功能可能还有着明显的限制,希望同学们多多指教,同时也希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
iOS实现滑动弧形菜单的思路与方法