实现效果:
静止时:子view对称排列,允许动态添加,0~24个都能较好的显示.
旋转时:中心view不动,子view随手势旋转,最下方子view变大突出.
实现思路:
所有的控件全部加到一个大的背景view上,本质上旋转的是这个背景view,在旋转背景view的同时,让它所有的子控件反向旋转,就实现了现在这种效果.
使用touchMoved方法获取手势,使用transform来实现动画.
最下方的view变大是循环判断子view.frame.x,当它处于一个范围,并且frame.y大于中心view.frame.y的时候.修改它的transform,来使其变大,并且修改它的tag来标记它已经属于变大状态,当它frame.x超出了预定范围,使其还原.
实现方式:
1.添加背景透明view,中心圆圈view.
2.添加周围旋转子view.
3.添加旋转方法.
4.交互优化.
1.添加背景透明view,中心圆圈view.
/// 添加背景view,也是旋转的view
private func setContentView() {
setCircleView()
contentView = UIView(frame: CGRect(x: 0, y: 0, width: ScreenInfo.Width, height: ScreenInfo.Width))
contentView?.center = self.view.center
self.view.addSubview(contentView!)
contentView!.addSubview(circleView!)
}
/// 添加中间圆形view
private func setCircleView(){
let view = UIImageView(frame: CGRect(x: 0.5 * CGFloat(1 - PROPORTION) * ScreenInfo.Width + 10, y: 0.5 * CGFloat(1 - PROPORTION) * ScreenInfo.Width + 10, width: ScreenInfo.Width * CGFloat(PROPORTION) - 20, height: ScreenInfo.Width * CGFloat(PROPORTION) - 20))