项目介绍:
在别人的基础上进行了改进,简化了代码,新增了拖动功能,改变了动画方式。
ViewController.m 的实现方法:
[Objective-C] 查看源文件 复制代码
- (void)createSmallBtnWithNumber:(int)number gap:(CGFloat)gap centerDistance:(CGFloat)distance { for (int i = 0; i < number; i ++) { CGFloat angle = M_PI * 2 / number; CGFloat rad = distance * sinf(angle / 2) - gap / 2.0; ang = angle; centerDis = distance; num = number; UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; CGRect rect = { {0,0},{2 * rad, 2 * rad} }; btn.frame = rect; btn.tag = 100 + i; btn.alpha = 0; btn.layer.cornerRadius = rad; [btn setTitle:[NSString stringWithFormat:@"第%d个",i] forState:UIControlStateNormal]; [btn setTitleColor:[UIColor purpleColor] forState:UIControlStateNormal]; [btn setTitleColor:[UIColor brownColor] forState:UIControlStateSelected]; [btn setBackgroundImage:[UIImage imageNamed:@"bg1"] forState:UIControlStateNormal]; [btn setBackgroundImage:[UIImage imageNamed:@"bg2"] forState:UIControlStateSelected]; [btn addTarget:self action:@selector(bunClick:) forControlEvents:UIControlEventTouchUpInside]; btn.center = self.view.center; [self.view addSubview:btn]; btns = [NSMutableArray array]; [btns addObject:btn]; } } - (void)bunClick:(UIButton *)btn { for (int i = 0; i < num; i ++) { if (i == btn.tag - 100) { btn.selected = YES; } else { UIButton *button = (UIButton *)[self.view viewWithTag:i + 100]; button.selected = NO; } } } - (IBAction)centerButton:(UIButton *)sender { for (int i = 0; i < num; i ++) { UIButton *btn = (UIButton *)[self.view viewWithTag:100 + i]; CGFloat x = centerDis * cosf(ang * i) + sender.center.x; CGFloat y = centerDis * sinf(ang * i) + sender.center.y; [UIView animateWithDuration:0.3 delay:0.1 * i options:UIViewAnimationOptionCurveLinear animations:^{ if (!CGPointEqualToPoint(btn.center, sender.center)) { UIButton *btn = (UIButton *)[self.view viewWithTag:100 + i]; btn.center = sender.center; btn.alpha = 0; sender.selected = NO; } else { btn.center = CGPointMake(x, y); btn.alpha = 1.0; sender.selected = YES; } } completion:nil]; } } - (IBAction)moveAction:(UIPanGestureRecognizer *)sender { CGPoint point = [sender translationInView:self.view]; sender.view.center = CGPointMake(sender.view.center.x + point.x, sender.view.center.y + point.y); [sender setTranslation:CGPointZero inView:self.view]; UIButton *centerBtn = (UIButton *)sender.view; for (int i = 0; i < num; i ++) { UIButton *btn = (UIButton *)[self.view viewWithTag:100 + i]; CGFloat x = centerDis * cosf(ang * i) + centerBtn.center.x; CGFloat y = centerDis * sinf(ang * i) + centerBtn.center.y; if (centerBtn.selected) { btn.center = CGPointMake(x, y); } else { btn.center = centerBtn.center; } } }
DefineButton.zip
(181.96 KB, 下载次数: 868)
2016-8-8 10:18 上传
点击文件名下载附件
CCP_Code